2014-02-25 73 views
0

我想引用計數(*),將其保存爲總以後引用它,但它不工作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(*)只有一次,它保存爲一個變量,並使用該變量

回答

0

你不能使用列作爲當別名和其他列處於同一級別的SELECT時別名。

它不可能,因爲查詢嘗試在定義之前使用別名。 如果您查看子句的邏輯查詢處理順序,您會發現在SELECT之前邏輯地評估了WHERE子句。您可以引用SELECT中分配的列別名的唯一子句是ORDER BY,因爲它是在SELECT子句之後評估的唯一子句。甚至不能在定義它的同一個SELECT子句中引用別名。

0

它是不可能的。變通辦法如下:

`select total,total-cntA,total-cntB,total-cntC` 
`from` 
`(select count(*)total,count(A)cntA,count(b)cntB,count(c)cntC from table1)`