2009-09-20 81 views

回答

2

類似的問題:

Why does MySQL allow "group by" queries WITHOUT aggregate functions?

這是MySQL特定的,而不是ANSI標準SQL。大多數其他數據庫引擎不允許在其上未被分組或正在通過聚合函數運行的列。

看來MySQL保留了與條件匹配的第一行的值。

具有此行爲的聚合函數是FIRST(),雖然MySQL實現它,但這似乎是未分組的列的默認行爲,並且哪些未通過任何其他聚合函數運行。

在ANSI標準SQL,你會怎麼做:

SELECT FIRST(jobtitle), company FROM jobs GROUP BY company; 

而在MySQL中,你可以只(但是ANSI標準的工作只是藏漢):

SELECT jobtitle, company FROM jobs GROUP BY company; 
+2

FWIW,SQLite的也支持這種非標準group-by的行爲,但SQLite返回組中最後一個*匹配行的值。 – 2009-09-20 15:51:19

+0

這個答案是錯誤的:MySql不支持FIRST關鍵字(http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html)。此外,選擇隨機匹配值 - 不一定是組中出現的第一行中的值。 – 2011-03-13 22:35:53