【发布时间】:2020-04-08 10:08:50
【问题描述】:
我想计算参与表中的所有条目,以查找没有用户条目或显式用户没有事件条目的事件。
示例:我有 13 个事件和 2 个用户。
用户 A(即我用于查询的用户)参与了两个事件(事件 1 和事件 2)。 用户 B 还参加了两个活动(活动 2 和活动 3)。 没有人参加过其他任何活动。
如果我使用 WHERE event.userId = "User A" 查询,我得到正确的计数 2
如果我查询 WHERE event.userId IS NULL 我得到正确的计数 10
但是如果我查询 WHERE event.userId IS NULL OR event.userId != "User A" 我得到的计数是 13(但应该是 11)
SELECT
COUNT(DISTINCT event.id) AS count
FROM
event
LEFT JOIN
event_participation participation ON participation.eventId=event.id
###
# WITH USER
###
# With this where clause I will get the correct count with the user
#WHERE participation.userId = "de9d0de5-5b2f-4108-8df7-6b89ec539679"
###
# WITHOUT USER
###
# Tried participation.userId != "de9d0de5-5b2f-4108-8df7-6b89ec539679" for ??? after OR, but this is not correct
#WHERE participation.userId IS NULL OR ???
解决方案应该是所有条目的单一计数结果:
我怎样才能做到这一点?
【问题讨论】:
-
您当前的查询有什么问题?它应该已经开始工作了。
-
请在您的问题中添加示例数据。
-
好的,我将它添加到问题中
-
不...我的意思是为有问题的表添加示例表数据,然后向我们展示预期的输出。不要留下任何可能引起误解的细节。
-
WHERE event.userId IS NULL OR event.userId != "User A"是什么意思?为什么结果应该是 11?
标签: mysql sql join count relation