MySql中的count()函式
1.count()函式是用來統計表中記錄的一個函式,返回匹配條件的行數。
2.count()語法:
(1)count(*)---包括所有列,返回表中的記錄數,相當於統計表的行數,在統計結果的時候,不會忽略列值為NULL的記錄。
(2)count(1)---忽略所有列,1表示一個固定值,也可以用count(2)、count(3)代替,在統計結果的時候,不會忽略列值為NULL的記錄。
(3)count(列名)---只包括列名指定列,返回指定列的記錄數,在統計結果的時候,會忽略列值為NULL的記錄(不包括空字串和0),即列值為NULL的記錄不統計在內。
(4)count(distinct 列名)---只包括列名指定列,返回指定列的不同值的記錄數,在統計結果的時候,在統計結果的時候,會忽略列值為NULL的記錄(不包括空字串和0),即列值為NULL的記錄不統計在內。
3.count(*)&count(1)&count(列名)執行效率比較:
(1)如果列為主鍵,count(列名)效率優於count(1)
(2)如果列不為主鍵,count(1)效率優於count(列名)
(3)如果表中存在主鍵,count(主鍵列名)效率最優
(4)如果表中只有一列,則count(*)效率最優
(5)如果表有多列,且不存在主鍵,則count(1)效率優於count(*)
4.因為count(*)和count(1)統計過程中不會忽略列值為NULL的記錄,所以可以通過以下兩種方式來統計列值為NULL的記錄數:
(1)select count(*) from table where is_active is null;
(2)select count(1) from table where is_active is null;
5.特例:
(1)select count('') from table;-返回表的記錄數
(2)select count(0) from table;-返回表的記錄數
(3)select count(null) from table;-返回0