count()查询疑惑🤔
count()是一个特殊的函数,有两种不同的作用:可以统计某个列值的数量,也可以统计行数。在统计列值时要求列值时非空的(不统计NULL)。如果在count()的括号中指定了列或者列的表达式,则统计的就是这个表达式有值的结果集。
count()的另外一个作用是统计结果集的行数。当MySQL确认括号内的表达式值不可能为空时,实际上就是统计行数。最简单的就是当我们使用count(*)的时候,这种情况下通配符 * 并不会像我们猜想的那样扩展成所有的列,实际上,它会忽略所有的列而直接统计所有的行数。
所以如果我们希望知道的是结果集的行数,最好使用count(*),这样写意义清晰,性能也会更好。
https://dev.mysql.com/doc/refman/5.7/en/aggregate-functions.html#function_count