2009-09-20 61 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