我有两张桌子。(MySQL 数据库)事件:
id | title | ...
活动参与:
event_id | user_id | confirmed
confirmed
是 0/1 列。我想查找指定用户参与的活动。我的 SQL 查询是:
SELECT *, COALESCE(SUM(ep.confirmed), 0) AS count_members
FROM event e
LEFT JOIN event_participate ep ON e.id = ep.event_id
GROUP BY ep.event_id
HAVING (
ep.user_id = 6
)
我必须使用有 clasule 因为我想扩展这个查询。我有 5 个事件的结果,但是当我查询时:
SELECT *
FROM `event_participate`
WHERE `user_id` = 6
我有 7 条记录。这怎么可能?
我已经编辑了第二个表的结构(event_participate)——它可以帮助你理解我为什么要使用having
分句。当我使用时,WHERE
我将始终在 count_members 中获得 1。
编辑:我的目标是获取特定用户参与的活动,我想知道有多少用户已经参与了这些活动。
例如,用户 id=6 参加一个 id=1 的活动。但是还有 3 个其他用户参与事件 id=1。所以我应该得到一个事件,并且在列 count_members 我应该得到4
.