Насколько я знаю mysql группы GROUP BY к последней найденной записи.
Там каким-либо решением является к GROUP BY первая запись?
Я имею, устанавливают ПОРЯДОК в команде SQL, и мне нужен возврат GROUP BY первая запись а не последнее.
Править
Вот Запрос
SELECT
DISTINCT(master.masterID),
langData.*,
master.*
FROM master_table as master
INNER JOIN lang_table as langData ON
langData.masterID=master.masterID
GROUP BY master.masterID
ORDER BY
CASE
WHEN langData.lang='currentLang' THEN 1 ELSE 999 END ,
master.name desc LIMIT 0,10
Запрос выше выбирает masterID
для много таблицы языка и предполагают для возврата СНАЧАЛА записей в currentLang
и закажите им по имени И ЗАТЕМ всем другим языкам.
Не спрашивайте меня, почему я не устанавливаю язык в СОЕДИНЕНИИ. Это - путь, который будет сделан.
Таким образом, все хорошо работает, до сих пор ожидают сценарий, что у меня есть запись с языками en
и fr
. Если currentLang
en
затем на основе
langData.lang='currentLang' THEN 1 ELSE 999 END
en
порядок равняется 1 и fr
порядок 999 и вместо того, чтобы получить значение en
Я получаю значение fr
.
Вот почему я хочу сгруппироваться к первой строке.
Я полагаю, вы говорите чего-то вроде
SELECT *
FROM mytable
GROUP BY
column
Вы не должны использовать неагрегированные выражения в GROUP BY
, если они не все одинаковы в группе.
Если вы хотите вернуть запись, содержащую наименьшее значение выражения в группе, используйте это:
SELECT mo.*
FROM (
SELECT DISTINCT column
FROM mytable
) md
JOIN mytable mo
ON mo.id =
(
SELECT id
FROM mytable mi
WHERE mi.column = md.column
ORDER BY
mi.column, mi.someorder
LIMIT 1
)