当您在 SQL 的 COUNT() 中使用 DISTINCT * 时会发生什么?

时间:2021-03-19 15:10:06

标签: sql

我刚刚了解了 COUNT() 函数,以及如何通过将 * 作为参数传递来获取列中的行数。

SELECT COUNT(*) FROM table;

我还了解到,我们可以使用 DISTINCT 来获取表中某一列的不同行数。

SELECT COUNT(DISTINCT column) FROM table;

我注意到以下内容没有返回任何内容。

SELECT COUNT(DISTINCT *) FROM table;

这是为什么?

我想我的问题的根源是我不太完全理解 COUNT() 函数和 * 作为参数的作用。我的资源说 COUNT() 函数将一列作为参数并计算有多少非 NULL 行。因此,假设我们有一个表,该表有一列,其中一些行同时具有 NULL 和非 NULL 值。如果 COUNT(column) 不计算非 NULL 行,那么 COUNT(*) 会发生什么不同,以便计算所有行?此外,在 COUNT(DISTINCT *) 期间会发生什么?

1 个答案:

答案 0 :(得分:0)

这在大多数数据库中都是一个语法错误。如果允许,它可能相当于:

select count(*)
from (select distinct * from t) t

但是,NULL 值可能会使其失效。

相关问题