據我所知,mysql GROUP BY組找到最後一條記錄。GROUP BY返回第一條記錄
有沒有解決方案GROUP BY的第一個記錄?
我已經在SQL命令中設置了ORDER,我需要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
記錄,並通過名稱爲了他們,然後所有其他語言。
不要問我爲什麼不在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。 '順便說一句',你爲什麼在這裏有'DISTINCT',它的目的是什麼? – Quassnoi
我試圖實現「首先給我所有記錄從當前的語言順序名稱,然後爲所有其他語言按名稱排序」含義:如果當前郎是EN,然後獲取EN的所有記錄,然後獲取其他lang的所有記錄。如果在lang表中有一條記錄有EN,則FR返回EN值.IF在lang表中不存在返回任何其他lang – ntan
這很容易用'JOIN'來完成,如下所述:http:// explainextended。 com/2009/08/10/fallback-language-names-mysql /但由於一些奇怪的原因(你甚至不想被要求),你不願意使用它。 – Quassnoi