Mysql 只有当SUM返回某个值时,才有办法在SQL中显示行吗?
执行求和查询时,是否可能只显示某个值?例如,我有一个Mysql 只有当SUM返回某个值时,才有办法在SQL中显示行吗?,mysql,sql,Mysql,Sql,执行求和查询时,是否可能只显示某个值?例如,我有一个business\u用户表和一个慈善机构的活动表 如您所见,业务用户2有2个活动,而业务用户1有0个活动 mysql> select business_id, active from campaigns; +-------------+--------+ | business_id | active | +-------------+--------+ | 2 | 1 | | 2 |
business\u用户
表和一个慈善机构的活动
表
如您所见,业务用户2有2个活动,而业务用户1有0个活动
mysql> select business_id, active from campaigns;
+-------------+--------+
| business_id | active |
+-------------+--------+
| 2 | 1 |
| 2 | 1 |
| 1 | 0 |
+-------------+--------+
3 rows in set (0.00 sec)
mysql> SELECT b.business_id, SUM(CASE WHEN c.active = true THEN 1 ELSE 0 END) as active_campaigns
-> FROM business_users b, campaigns c
-> WHERE b.business_id = c.business_id
-> GROUP BY c.business_id;
+-------------+------------------+
| business_id | active_campaigns |
+-------------+------------------+
| 1 | 0 |
| 2 | 2 |
+-------------+------------------+
每当我执行上面的查询时,我都希望显示具有
活动=0
的行,并且不显示具有任何其他值的行。可以这样做吗?将具有活动的\u活动=0
添加到查询的结尾将具有活动的\u活动=0
添加到查询的结尾
SELECT b.business_id, SUM(CASE WHEN c.active = true THEN 1 ELSE 0 END) as active_campaigns
FROM business_users b, campaigns c
WHERE b.business_id = c.business_id
GROUP BY c.business_id
Having SUM(CASE WHEN c.active = true THEN 1 ELSE 0 END) = 0