SELECT行,COUNT(*)FROM表;仅返回一个结果,而不是全部结果

时间:2019-08-20 18:07:28

标签: mysql

我正在学习MySQL,并在幕后遇到了一些有趣的事情,我想知道获得输出结果的原因。

就我而言,我有一张桌子,我正在跑步

SELECT released_year, COUNT(*) FROM books; 

我的输出是

+---------------+----------+
| released_year | COUNT(*) |
+---------------+----------+
|          2003 |       19 |
+---------------+----------+

现在的发布年份显然比2003年多了很多,我很好奇为什么使用COUNT将我的结果限制为一个条目而不是返回整行?

1 个答案:

答案 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版本尚未包括错误的通用组。