我正在尝试使用SQL执行我的第一步。目前我正在尝试分析数据库并解决了我无法解释的问题。最终有人可以给我一个提示。
我有一个mySQL表('cap851312')女巫有330.178表行。我已将表格导入Excel,并验证了这个数字!
每一行都包含条目日期的字段(列'ID_MES_ANO')。目前,所有日期都是唯一设置的"201312"
。
启动以下命令,我希望看到给定的行数,但出现的数字是476.598。
SELECT movedb.cap851312.ID_MES_ANO, count(*)
FROM movedb.cap851312;
我已将文件导入Excel,并验证了行数。实际上,它是330.178!
我怎么能知道,到底出了什么问题?
更新
我试过了:
SELECT count(*) FROM movedb.cap851312
这也返回476.598。
当我使用工作台时,我很容易确认330.178表行的数量。
更新2:
Workbench Table Inspector确认:“表行:330178”
解决了 - 但不确定原因:
我将语句改为
SELECT count(ID_MES_ANO) FROM movedb.cap851512;
这次结果是330178!
答案 0 :(得分:0)
COUNT(*)
统计所有行。
COUNT(ID_MES_ANO)
仅计算ID_MES_ANO
不为空的行。
因此两者之间的差异是ID_MES_ANO
为空的行。
您可以使用
进行验证SELECT count(*) FROM movedb.cap851512 WHERE ID_MES_ANO IS NULL;
顺便说一下:
SELECT movedb.cap851312.ID_MES_ANO, count(*) FROM movedb.cap851312;
表示:将所有行聚合到一个结果行(通过使用不带COUNT
的聚合函数GROUP BY
)。此结果行显示ID_MES_ANO
和所有记录的数量。标准SQL不允许这样做,因为您没有告诉DBMS显示那些成千上万条记录中的哪些ID_MES_ANO
。 MySQL在这里违反了标准,只是从行中任意挑选一个ID_MES_ANO
。