在COUNT里面选择

Iss*_*lly 27 mysql sql

我想在COUNT中嵌入一个SELECT,但我找不到任何例子.

#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
Run Code Online (Sandbox Code Playgroud)

Jus*_*n K 37

你真的不需要一个子选择:

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
Run Code Online (Sandbox Code Playgroud)

  • +1这以更有效的方式解决了OP的特定查询.我会使用`IF()`而不是`CASE`,因为只有2个状态,但删除子查询是正确的做法. (4认同)

Ike*_*ker 23

您可以在子选择内移动count():

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
Run Code Online (Sandbox Code Playgroud)