我正在尝试引用count(*),将其另存为total,稍后再引用它,但它不起作用
例如:
select ((count(*) as total)-count(a)),
(total - count(b)),
(total - count(c))
from table;
怎么了?
我知道这是可以做到的
select (count(*) -count(a)),
(count(*) - count(b)),
(count(*) - count(c))
from table;
但我只想使用count(*)一次,将其存储为变量并使用该变量
2条答案
按热度按时间ippsafx71#
这是不可能的。解决方法如下:
8mmmxcuj2#
当别名和其他列处于同一选择级别时,不能将该列用作别名。
这是不可能的,因为查询试图在定义别名之前使用它。如果查看子句的逻辑查询处理顺序,您会发现where子句是在select之前进行逻辑计算的。唯一可以引用select中指定的列别名的子句是order by,因为它是在select子句之后计算的唯一子句。甚至不能在定义别名的同一select子句中引用别名。