【发布时间】:2010-11-29 21:08:36
【问题描述】:
比如这个:
SELECT id, count( * ) , 公司
来自jobs
按公司分组
其中id是jobs的主键
【问题讨论】:
比如这个:
SELECT id, count( * ) , 公司
来自jobs
按公司分组
其中id是jobs的主键
【问题讨论】:
类似的问题:
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;
【讨论】: