我刚刚了解了 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 *) 期间会发生什么?
答案 0 :(得分:0)
这在大多数数据库中都是一个语法错误。如果允许,它可能相当于:
select count(*)
from (select distinct * from t) t
但是,NULL
值可能会使其失效。