在mysql中,可以使用COUNT()函數(shù)來統(tǒng)計(jì)查詢結(jié)果;該函數(shù)用于統(tǒng)計(jì)查詢結(jié)果的行數(shù),返回表中符合特定條件的記錄行數(shù)。COUNT()函數(shù)有三種語法:1、“COUNT(*)”,返回總行數(shù),包含NULL和非NULL值的行;2、“COUNT(字段名)”,返回不包含NULL值的行數(shù),會忽略空值行;3、“COUNT(DISTINCT 字段名)”,返回不包含NULL值的唯一行數(shù)。
本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。
在mysql中,可以使用COUNT()函數(shù)來統(tǒng)計(jì)查詢結(jié)果。
MySQL COUNT()函數(shù)
COUNT()函數(shù)統(tǒng)計(jì)數(shù)據(jù)表中包含的記錄行的總數(shù),或者根據(jù)查詢結(jié)果返回列中包含的數(shù)據(jù)行數(shù)
COUNT()函數(shù)的返回類型為BIGINT。 如果沒有找到匹配的行,則COUNT()函數(shù)返回0。
COUNT()函數(shù)有三種語法:
COUNT(*) COUNT(字段名) COUNT(DISTINCT 字段名)
COUNT(*)
COUNT(*)函數(shù)返回由SELECT語句返回的結(jié)果集中的行數(shù)。COUNT(*)函數(shù)計(jì)算包含NULL和非NULL值的行,即:所有行。
如果使用COUNT(*)函數(shù)對表中的數(shù)字行進(jìn)行計(jì)數(shù),而不使用WHERE子句選擇其他列,則其執(zhí)行速度非??臁?/p>
這種優(yōu)化僅適用于MyISAM表,因?yàn)镸yISAM表的行數(shù)存儲在information_schema數(shù)據(jù)庫的tables表的table_rows列中; 因此,MySQL可以很快地檢索它。
COUNT(字段名)
COUNT(字段名)返回不包含NULL值的行數(shù)。
COUNT(DISTINCT 字段名)
COUNT(DISTINCT 字段名)返回不包含NULL值的唯一行數(shù)。
MySQL COUNT示例
-
創(chuàng)建一個名為demo的新表,并插入一些示例數(shù)據(jù)
-- create a demos table CREATE TABLE IF NOT EXISTS demos( id int auto_increment primary key, val int );
-- insert some sample data INSERT INTO demos(val) VALUES(1),(1),(2),(2),(NULL),(3),(4),(NULL),(5);
-- select data from demos table SELECT * FROM demos;
-
計(jì)算demos表中的所有行,請使用COUNT(*)函數(shù)
SELECT COUNT(*) FROM demos;
可以添加一個WHERE子句來指定一個條件來計(jì)數(shù),例如,只計(jì)算val列包含值等于2的行,使用以下查詢:
SELECT COUNT(*) FROM demos WHERE val = 2;
val列中的兩個NULL值將被忽略。
-
要計(jì)算demos表中的唯一行,可以將DISTINCT運(yùn)算符添加到COUNT函數(shù)中,如下查詢語句:
SELECT COUNT(DISTINCT val) FROM demos;
在計(jì)數(shù)中忽略兩個重復(fù)值1、2和兩個NULL值。
【