我正在尝试引用count(*),将其另存为总计并稍后引用它,但它不起作用
例如:
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(*) 一次,将其存储为变量并使用该变量
当别名和其他列位于同一 SELECT 级别时,不能将该列用作别名。
这是不可能的,因为查询尝试在定义别名之前使用别名。如果您查看子句的逻辑查询处理顺序,您会发现 WHERE 子句是在 SELECT 之前进行逻辑计算的。唯一可以引用在 SELECT 中分配的列别名的子句是 ORDER BY,因为它是在 SELECT 子句之后计算的唯一子句。您甚至不能在定义别名的同一 SELECT 子句中引用别名。
这
是不可能的。解决方法如下:
`select total,total-cntA,total-cntB,total-cntC`
`from`
`(select count(*)total,count(A)cntA,count(b)cntB,count(c)cntC from table1)`