You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现无参会记录时返回0,有记录时返回SUM(guests)结果

解决方案

你的问题出在使用了内连接(JOIN),它只会返回两张表中匹配的记录,没有参会记录的活动会被直接过滤掉,导致COALESCE根本没机会处理那些缺失的行。

要解决这个问题,需要以wp_posts为主表,使用**左连接(LEFT JOIN)**关联participants,确保所有指定的活动都能被包含在结果中,再用COALESCE把SUM返回的NULL结果转为0:

SELECT w.ID, w.post_title, COALESCE(SUM(p.guests), 0) AS total_guests
FROM wp_posts w
LEFT JOIN participants p ON w.ID = p.eventID
WHERE w.ID IN(22, 30, 34, 38, 39, 40)
GROUP BY w.ID, w.post_title

关键说明:

  1. LEFT JOIN:以wp_posts的指定活动为基础,即使participants中没有对应活动的参会记录,也会保留该行,此时p.guests字段值为NULL。
  2. COALESCE(SUM(p.guests), 0):当SUM(p.guests)返回NULL(即无参会记录)时,自动替换为0;有记录时则返回实际的嘉宾总数。
  3. GROUP BY:按活动ID和标题分组,确保每个活动对应一行结果。

执行这条查询后,会得到你期望的输出:

+----+------------+--------------+
| ID | post_title | total_guests |
+----+------------+--------------+
| 22 | Christmas  | 15           |
| 30 | New Year   | 3            |
| 34 | Birthday   | 0            |
| 38 | Easter     | 0            |
| 39 | Ruhetag    | 0            |
| 40 | St Patrick | 0            |
+----+------------+--------------+

内容的提问来源于stack exchange,提问作者cranked_coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 20:37:05