SQL中的count使用

1.首先 我有这么一个表

MariaDB [istester]> select * from istester;
+----+--------+------+-------+------------+---------+-------+
| id | uname  | sex  | birth | department | address | idoxu |
+----+--------+------+-------+------------+---------+-------+
|  1 | idoxu  | 0    |  NULL | NULL       | NULL    | 2020  |
|  2 | idoxu2 | 0    |  NULL | NULL       | NULL    | 2020  |
| 11 | idoxu3 | 1    |  NULL | NULL       | NULL    | NULL  |
| 12 | idoxu4 | 2    |  NULL | NULL       | NULL    | NULL  |
| 13 | idoxu5 | 1    |  NULL | NULL       | NULL    | NULL  |
| 14 | idoxu6 | NULL |  NULL | NULL       | NULL    | NULL  |
+----+--------+------+-------+------------+---------+-------+

 2.题目是:查询istester表,有几种性别类型(sax字段,去重)

SELECT COUNT(DISTINCT sex) FROM istester;
+---------------------+
| COUNT(DISTINCT sex) |
+---------------------+
|                   3 |
+---------------------+

执行上面的SQL之后,NULL并没有统计进来,问了一下DBA,得知,一般在MySQL中,字段一定要设默认值,不能用默认NULL,这样在count,group的时候会有问题。

int类型可以默认为0, varchar可以默认为‘’

这就涉及程序中的经典问题:0、空值、和NULL是不是什么都没有的意思

字符默认为空可以表示为‘’,但是这个空字符是有值的,不是什么都没有,和数值类型为0的意思类似,而NULL则是真的什么都没有,所以统计计算的时候会忽略。

所以一般在建表的时候就有规范,不能默认null,一定要有值,0或者空字符

猜你喜欢

转载自blog.csdn.net/zjxht62/article/details/106517088