我已经研究过:
之间的区别count(*)
count(column_name)
count(1)
例如:此处:Count(*) vs Count(1)。一些回答者还说:count('foo')。你为什么要用count('foo')。这似乎有效:
select count('hello my name is joe bloggs and I finished school about ten years ago') from dbdisposals
为什么要将字符串传递给count函数?
答案 0 :(得分:3)
使用count
中的任何文字值与count(*)
具有相同的效果,它会计算组中的行数。使用count('str')
与count(1)
具有相同的效果,即它会计算值不是null
的记录。由于任何记录的字面值('str'
或1
)都不会为null
,因此会计算所有记录。
count
函数计算所有非空值,因此count
中的字面值与count(*)
具有相同的效果,但count(column_name)
仅计算非空值该列中的值。
在count
中使用字符串文字可以正常工作,唯一的原因就是它可能会让人感到困惑。