我想知道以下4个简单查询在结果和功能方面的区别:
SELECT COUNT(*) FROM employees;
SELECT COUNT(0) FROM employees;
SELECT COUNT(1) FROM employees;
SELECT COUNT(2) FROM employees;
这四个例子都评估为相同的数字 - 没有区别.
可能给出不同答案的是:
SELECT COUNT(middle_initial) FROM employees;
Run Code Online (Sandbox Code Playgroud)
如果列中有任何带有NULL的条目middle_initial
,则返回的计数将不同,COUNT(*)
因为它将只是列中非空值的数量.
结果没有区别,它们都返回行数employees
.
COUNT(expression)
简单地表示"对于此表中的每一行,如果expression
计算为非空值,则计算此行".
但是,*
意味着计算任何东西,n
而是一个常数数值,因此永远不会为空.因此,两者都没有考虑实际的行数据,因此返回表中的总行数.
归档时间: |
|
查看次数: |
328 次 |
最近记录: |