我在兩個單獨的列上進行計數函數,但是從具有不同結果的表中進行計數。 Count應該如何包含Null
值?從同一表中選擇計數返回不同的編號
SELECT COUNT(Record_Id) FROM my_schema.table
返回40493
SELECT COUNT(Status) FROM my_schema.table
返回40249
我在兩個單獨的列上進行計數函數,但是從具有不同結果的表中進行計數。 Count應該如何包含Null
值?從同一表中選擇計數返回不同的編號
SELECT COUNT(Record_Id) FROM my_schema.table
返回40493
SELECT COUNT(Status) FROM my_schema.table
返回40249
這並不奇怪。帶有作爲參數的表達式的COUNT()
統計非NULL
值的數量。
因此,這就是說Record_Id
是NULL
比status
多六倍。
您可以使用COUNT(*)
獲得記錄總數。
count()
不包括NULL值。這是專門用於計算非空值的目的,特別是在具有大量外連接的複雜查詢中。
如果要獲取行數,請不要在特定列上使用計數,而只需使用COUNT(1)
或任何其他標量值,該值將在結果集中的每一行中重複使用。
是否有一個用於計算除了使用where子句之外的空值的函數? – user2242044
@ user2242044。 。 。我不知道你在問什麼。 'COUNT(*)'統計行數。 'COUNT(status)'計數非空狀態值的數量。 'COUNT(*) - COUNT(status)'是計算'NULL'值數量的一種方式(儘管我爲此將在MySQL中使用SUM(status爲null))。 –