列数为null加上count为非null不加

时间:2017-08-25 08:38:17

标签: mysql mariadb

试图查看专栏中的内容,我最终做了一些计算。

该表有3981行。

但计数列仅显示其空值和非空值总数的低得多。

怎么回事?

MariaDB [mydb]> select count(naf) from client where naf is not null;
+------------+
| count(naf) |
+------------+
|         83 |
+------------+
1 row in set (0.01 sec)

MariaDB [mydb]> select count(naf) from client where naf is null;
+------------+
| count(naf) |
+------------+
|          0 |
+------------+
1 row in set (0.01 sec)

MariaDB [mydb]> select count(*) from client;
+----------+
| count(*) |
+----------+
|     3981 |
+----------+
1 row in set (0.01 sec)

1 个答案:

答案 0 :(得分:1)

以下查询误导您:

select count(naf) from client where naf is null;

COUNT函数忽略所有NULL值。因此,此查询永远不会返回除零之外的任何值。实际上,NULL表中有3898个client条记录。要计算空值,您可以尝试使用SUM函数:

SELECT SUM(1) FROM client WHERE naf IS NULL;

这应该是3898的总和。