Возврат GROUP BY первая запись

Насколько я знаю 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.

Вот почему я хочу сгруппироваться к первой строке.

11
задан ekad 7 May 2017 в 12:23
поделиться

2 ответа

Я полагаю, вы говорите чего-то вроде

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
        )
11
ответ дан 3 December 2019 в 09:20
поделиться

Добавьте LIMIT 1 к вашему запросу.

1
ответ дан 3 December 2019 в 09:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: