我可以使用这样的案例陈述吗?

时间:2012-08-01 13:27:50

标签: mysql count case

目前我没有权限对此进行测试,但未找到任何相关示例。 我想尝试这样的事情:

SELECT member.name, DISTINCT member.id, 
     COUNT(CASE WHEN member.code = 'A' 
     THEN 1) AS CountACode, ... CountBCode, COUNT(*) as CountTotal  FROM member

我知道我可以这样做,但我还有其他一些我已经使用的列,这将更容易做到。但是我相信我被告知我错了,没有任何迹象表明原因。有人会介意告诉我问题在哪里吗?

3 个答案:

答案 0 :(得分:0)

您不能在DISTINCT子句之后立即编写SELECT子句。

是的,您可以在CASE WHEN内使用COUNT声明:

SELECT DISTINCT member.name,  member.id, 
       COUNT(CASE WHEN member.code = 'A' THEN 'something..' END) AS CountACode, 
       ... CountBCode, 
       COUNT(*) as CountTotal 
FROM member;

答案 1 :(得分:0)

您的问题是适用于整个结果集的DISTINCT,而不仅仅是单个字段。

对于计数,正常模式是我们SUM

SUM(CASE WHEN Condition = value THEN 1 ELSE 0 END)

答案 2 :(得分:0)

SELECT member.name, member.id, SUM(CASE WHEN member.code = 'A' THEN 1 ELSE 0) AS CountACode, ... CountBCode, COUNT(*) as CountTotal
FROM member
GROUP BY member.name, member.id