2016-11-13 58 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