Skip to content

MySQL COUNT 计数遇到 NULL 会发生什么

count 某一个列时,会忽略null的数据。

用一个真实的表做例子:

sql
USE test;
CREATE TABLE `test_table` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `name1` varchar(32) DEFAULT NULL COMMENT '名字1',
  `name2` varchar(32) DEFAULT NULL COMMENT '名字2',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

插入数据:

sql
insert into test_table(name1, name2) values('xigua', 'xigua');
insert into test_table(name1, name2) values('xigua', 'xiguacoding');
insert into test_table(name1, name2) values('xigua', null);
insert into test_table(name1, name2) values(null, null);

查询:

mysql> select * from test_table;
+----+--------+------------+
| id | name1  | name2      |
+----+--------+------------+
| 1  | xigua | xigua     |
| 2  | xigua | xiguacoding |
| 3  | xigua | <null>     |
| 4  | <null> | <null>     |
+----+--------+------------+

mysql> select count(*) from test_table;
+----------+
| count(*) |
+----------+
| 4        |
+----------+

mysql> select count(id), count(name1), count(name2) from test_table;
+-----------+--------------+--------------+
| count(id) | count(name1) | count(name2) |
+-----------+--------------+--------------+
| 4         | 3            | 2            |
+-----------+--------------+--------------+