2016-11-13 60 views
3

我想用SQL做我的第一步。目前我正试图分析一个数据库,并且解决了一个我无法解释的问题。最终有人可以给我一个提示。SQL差异使用COUNT命令

我有一个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:

工作台表检查确认: “表行:330178”


解决 - 但不确定具体的原因:

我改变了语句

SELECT count(ID_MES_ANO) FROM movedb.cap851512; 

这次结果是330178!

+0

尝试SELECT count(*) FROM movedb.cap851312; – sorencito

+1

根据Excel版本,最大行数不同。 –

+1

您是如何使用工作台确认330.178个表格行数的? – Solarflare

回答

0

COUNT(*)统计所有行。

COUNT(ID_MES_ANO)计数仅适用于ID_MES_ANO不为空行。

所以两者之间的区别在哪里ID_MES_ANO是空行。 (通过使用聚合函数COUNTGROUP BY)汇总所有行到一个单一的结果行:

您可以

SELECT count(*) FROM movedb.cap851512 WHERE ID_MES_ANO IS NULL; 

验证这顺便说一句:

SELECT movedb.cap851312.ID_MES_ANO, count(*) FROM movedb.cap851312; 

手段。该结果行显示ID_MES_ANO和所有记录的数量。标准SQL不允许这样做,因为您不告诉DBMS要显示那些成千上万条记录中的哪一个ID_MES_ANO。MySQL在这里违反了标准,只是从行中任意选取一个ID_MES_ANO