我想在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