我想根据具有多个 where 条件的单个列来选择两列数据。
SELECT country.countryname,COUNT(users.uid) as cnt
FROM users
JOIN country
ON users.country = country.countrycode
WHERE users.useractivated = 1 AND users.status = 'on'
GROUP BY users.country
ORDER BY cnt DESC
LIMIT 30
此查询为我提供了主要的 cnt 列。现在我想要一个额外的 cnt2 列
根据以下条件选择
users.status <> 'on'
但仅适用于之前主要选择的 30 个国家/地区。
所以输出看起来像
+----------------+-------+---------+
| countryname | cnt | cnt2 |
+----------------+-------+---------+
| USA | 1012 | 12 |
| CANADA | 1125 | 135 |
| ... | ... | ... |
+----------------+-------+---------+
我怎样才能做到这一点?
最佳答案
将 SUM 与 if 结合使用
SUM(IF(users.status = 'on', 1, 0)) AS cnt
或
SUM(IF(users.status <> 'on', 1, 0)) AS cnt2
查询:-
SELECT country.countryname,
SUM(IF(users.status = 'on', 1, 0)) AS cnt,
SUM(IF(users.status <> 'on', 1, 0)) AS cnt2
FROM users
JOIN country
ON users.country = country.countrycode
WHERE users.useractivated = 1
GROUP BY users.country
ORDER BY cnt DESC
LIMIT 30
关于mysql - 同一列上多个条件的联合结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33993355/