COUNT的不同面孔

Aff*_*fan 2 sql count

我想知道以下4个简单查询在结果和功能方面的区别:

  1. SELECT COUNT(*) FROM employees;

  2. SELECT COUNT(0) FROM employees;

  3. SELECT COUNT(1) FROM employees;

  4. SELECT COUNT(2) FROM employees;

Jon*_*ler 8

这四个例子都评估为相同的数字 - 没有区别.

可能给出不同答案的是:

SELECT COUNT(middle_initial) FROM employees;
Run Code Online (Sandbox Code Playgroud)

如果列中有任何带有NULL的条目middle_initial,则返回的计数将不同,COUNT(*)因为它将只是列中非空值的数量.


Bol*_*ock 6

结果没有区别,它们都返回行数employees.

COUNT(expression)简单地表示"对于此表中的每一行,如果expression计算为非空值,则计算此行".

但是,*意味着计算任何东西,n而是一个常数数值,因此永远不会为空.因此,两者都没有考虑实际的行数据,因此返回表中的总行数.