我想在COUNT裏面嵌入一個SELECT,但是我找不到任何例子。在COUNT裏面選擇
#pseudosql
SELECT a AS current_a, COUNT(*) AS b,
COUNT(SELECT FROM t WHERE a = current_a AND c = 'const') as d,
from t group by a order by b desc
我想在COUNT裏面嵌入一個SELECT,但是我找不到任何例子。在COUNT裏面選擇
#pseudosql
SELECT a AS current_a, COUNT(*) AS b,
COUNT(SELECT FROM t WHERE a = current_a AND c = 'const') as d,
from t group by a order by b desc
你並不真的需要一個子選擇:
SELECT a, COUNT(*) AS b,
SUM(CASE WHEN c = 'const' THEN 1 ELSE 0 END) as d,
from t group by a order by b desc
您可以將內部的計數()的子選擇:
SELECT a AS current_a, COUNT(*) AS b,
(SELECT COUNT(*) FROM t WHERE a = current_a AND c = 'const') as d,
from t group by a order by b desc
所以,選擇一個數裏面是SQL語法錯誤? – Ahmad 2016-10-19 15:37:31
@Ahmad,這是正確的,至少對於MySQL來說。 – 2016-10-21 21:32:18
使用SELECT COUNT(*) FROM t WHERE a = current_a AND c = 'const') as d
。
SELECT a AS current_a, COUNT(*) AS b,
(SELECT COUNT(*) FROM t WHERE a = current_a AND c = 'const') as d
from t group by a order by b desc
+1這更有效地解決了OP的特定查詢。因爲只有2個狀態,所以我會使用'IF()'而不是'CASE',但刪除子查詢是正確的。 – 2010-07-16 17:23:11