我正在学习MySQL,并在幕后遇到了一些有趣的事情,我想知道获得输出结果的原因。
就我而言,我有一张桌子,我正在跑步
SELECT released_year, COUNT(*) FROM books;
我的输出是
+---------------+----------+
| released_year | COUNT(*) |
+---------------+----------+
| 2003 | 19 |
+---------------+----------+
现在的发布年份显然比2003年多了很多,我很好奇为什么使用COUNT将我的结果限制为一个条目而不是返回整行?
答案 0 :(得分:0)
您忘记了在使用字段时按W3Tutorials SQL Group by部分中的指定,包括 SELECT 查询的GROUP BY column_name
部分。如果查询的SELECT部分中没有列名,则只能运行没有GROUP BY的聚合函数。
SELECT COUNT(*)
FROM books;
在将COUNT之类的AGGREGATE函数与一个字段一起使用时,您需要确保在该字段中包含一个GROUP BY
语句。对于您的示例,如下所示:
SELECT released_year, COUNT(*)
FROM books
GROUP BY released_year;
不幸的是,有时RDBMS驱动程序或您使用的客户端可能会尝试预先评估SQL,如果没有意义,它将对其进行调整。在这种特殊情况下,可能是您正在使用的MySQL版本尚未包括错误的通用组。