一般在select count(1) ** 的时候会有返回数据,即使没有数据也会返回一个0。如下:
先看表数据:
SELECT id FROM test_qhl;
使用group by id 分组后,在求count(1) 的值
这样自然会有正确的结果,但是如果确定 id 的值,比如where id = 10 那么返回的结果集中什么也没有,如下:
一开始对这个结果很疑惑,觉得没有数据,那么 count(1) 的结果应该是个0 啊,但是实际却是个空。我很疑惑。类比实验得知,将count(1) 换成max(id) 等聚合函数,返回值也是个空。
通过对max(id)的现象,更好理解为什么什么也没有返回。我的理解是如果使用where id = 10 后,并没有找出数据来,再去group by id 也是空的。根本没有数据,对一个空的数据集执行max() 的操作,那也是空的,如果返回一个0 ,那么显然也是没什么根据!