一、語義不同
二、性能差異
count(1)和count(*):這兩種寫法在大多數數據庫系統中的性能是相同的,因為它們都不關心具體的列值,只關心行的存在與否。count(列名):這種寫法在某些數據庫系統中可能會比count(1)和count(*)性能稍差,因為它需要檢查指定列的值是否為NULL,并排除NULL值的行。三、對空值的處理不同
count(1)和count(*):不關心表中的具體列值,因此不受空值影響,會將包含NULL值的行也計算在內。count(列名):只統計指定列的非空值,會排除包含NULL值的行,只計算指定列中不為NULL的行四、使用范圍不同
count(1)和count(*):適用于查詢整個表或滿足特定條件的行數。count(列名):適用于統計特定列的非空值數量。五、結果集不同
count(1)和count(*):返回的結果集只有一行一列,即表示查詢結果的行數。count(列名):返回的結果集只有一行一列,即表示指定列的非空值數量。六、可讀性不同
count(1):語義上不夠明確,不容易理解其作用。count(*):語義明確,表示統計行數。count(列名):語義明確,表示統計指定列的非空值數量。延伸閱讀
COUNT(*)是什么
COUNT(*) 是一種數據庫查詢語句,用于統計某個表中的記錄數或滿足指定條件的記錄數。它返回一個表示記錄數量的整數值。使用 COUNT() 時,數據庫引擎會對指定的表進行掃描,并計算符合條件的記錄數量。 表示選擇所有的列,而不是特定的列名。因此,COUNT(*) 將統計整個表中的記錄數,無論具體的列值是什么。