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