關於count函式的理解

laraverer發表於2022-01-06

count函式的基礎理解

   count()函式是用來統計表中記錄的一個函式,返回匹配條件的行數。

count函式的基礎語法說明

(1)count(*)---包括所有列,返回表中的記錄數,相當於統計表的行數,在統計結果的時候,不會忽略列值為NULL的記錄。

(2)count(1)---忽略所有列,1表示一個固定值,也可以用count(2)、count(3)代替,在統計結果的時候,不會忽略列值為NULL的記錄。

(3)count(列名)---只包括列名指定列,返回指定列的記錄數,在統計結果的時候,會忽略列值為NULL的記錄(不包括空字串和0),即列值為NULL的記錄不統計在內。

(4)count(distinct 列名)---只包括列名指定列,返回指定列的不同值的記錄數,在統計結果的時候,在統計結果的時候,會忽略列值為NULL的記錄(不包括空字串和0),即列值為NULL的記錄不統計在內。

count函式的進階語法說明

count(id_mt > 0 or null)
這個是count函式中傳入的是表示式,這個我們怎麼理解呢?

為了大家理解清楚,我舉個?

1、sql 語句中count()有條件的時候為什麼要加上or null如count(province = '浙江' or NULL) 這部分,為什麼要加上or NULL,直接count(province='浙江')有什麼問題嗎?不就是要找province = '浙江'的資料嗎,為什麼要計算NULL的資料。

答案:

因為當 province不是浙江時 province='浙江' 結果false。不是 NULL,count在值是NULL是不統計數, (count('任意內容')都會統計出所有記錄數,因為      count只有在遇見null時不計數,即count(null)==0,因此前者單引號內不管輸入什麼值都會統計出所有記錄數),至於加上or NULL , 很像其他程式設計裡的or運算子,第一個表示式是true就是不執行or後面的表示式,第一個表示式是false 執行or後面的表示式 。當province不為浙江時province = '浙江' or NULL 的結果是NULL,Count才不會統計上這條記錄數

:punch: :punch::punch:

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章