Насколько я знаю, группы mysql GROUP BY, найденные до последней записи.GROUP BY возвращает первую запись
Есть ли решение для GROUP по первой записи?
У меня есть команда ORDER в SQL, и мне нужна GROUP BY, возвращая первую запись, а не последнюю.
EDIT
Вот запрос
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
и заказать их по имени, а затем все остальные языки.
Не спрашивайте меня, почему я не устанавливаю язык в JOIN. Это способ сделать.
Так что все работает нормально до сих пор ожидает сценарий, что у меня есть запись с языками en
и fr
. Если currentLang
является en
затем на основе
langData.lang='currentLang' THEN 1 ELSE 999 END
en
порядка является 1 и fr
заказа составляет 999 и вместо того, чтобы значение en
я получаю значение fr
.
Вот почему я хочу сгруппировать в первую строку.
Я не буду спрашивать вас, почему вы не установите язык в 'JOIN' , скорее я скажу вам, что таким образом это не сработает. Неагрегированное выражение в 'GROUP BY' возвращает произвольную запись из каждой группы и не предполагается использовать, если значения меняются. Вы можете вернуть любую запись из 'master_table' (все они будут одинаковыми в каждой группе), но не из' lang_table'. Нет гарантии, по которой будет возвращена запись, nada, niente. 'BTW', почему у вас« DISTINCT »здесь, какова его цель? – Quassnoi
Я пытаюсь достичь «дайте мне сначала все записи из текущего языкового порядка по имени, а затем для всех остальных языков по имени». Значение: если текущий lang - EN, тогда получите все записи для EN, а затем получите все записи для других языков. IF в таблице lang для одной записи имеет EN, FR возвращает значение EN.IF в таблице lang. EN не существует. Return any other lang – ntan
это очень легко сделать с 'JOIN', как описано здесь: http: // explainextended. com/2009/08/10/fallback-language-names-mysql /, но по какой-то странной причине (о которой вы даже не хотите, чтобы вас просили) вы неохотно ее используете. – Quassnoi