Подтвердить что ты не робот

GROUP BY возвращает первую запись

Насколько я знаю группы mysql GROUP BY для найденной последней записи.

Есть ли какое-либо решение для GROUP BY по первой записи?

Я установил команду ORDER в 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 для нескольких языков и предположим, что вы вернете FIRST записи в currentLang и закажите их по имени И ТОГДА все другие языки.

Не спрашивайте меня, почему я не устанавливаю язык в JOIN. Это способ сделать.

Итак, все работает отлично, ожидайте, что сценарий у меня будет с языками en и fr. Если currentLang - en, то на основе

langData.lang='currentLang' THEN 1 ELSE 999 END

порядок en равен 1 и fr порядка 999, и вместо получения значения en я получаю значение fr.

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

4b9b3361

Ответ 1

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

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
        )

Ответ 2

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