MySQL 连接 - 数据不在第二个表中

标签 mysql join

我有 3 个表,t1 包含事件,t2 包含“参加”事件,t3 包含一些受邀用户 ID(链接到系统用户 ID)。不止一个用户可以参加和事件。

创建新事件后,它会插入到 t1 中。每次用户确认参加事件时,都会在 t2 中插入一行,否则 t2 表为空。

下面的查询提取用户正在参加的所有事件。

SELECT * FROM events t1
INNER JOIN attending_events t2 ON t1.id_ev = t2.id_ev
INNER JOIN attending_users t3 ON t2.id_user = t3.id_user AND t3.id_system_user=17
WHERE t1.id_comp = 42

请帮忙,我需要一个查询来做完全相反的事情,找到用户没有参加的事件。

最佳答案

SELECT  e.*
FROM    events e
WHERE   e.id_ev NOT IN
        (
        SELECT  id_ev
        FROM    attending_events ae
        JOIN    attending_users au
        ON      au.id_user = ae.id_user
        WHERE   au.system_user_id = 17
        )
        AND id_comp = 42

或:

SELECT  *
FROM    events e
LEFT JOIN
(
        attending_events ae
JOIN    attending_users au
ON      au.id_user = ae.id_user
)
ON      ae.id_ev = e.id_ev
        AND au.system_user_id = 17
WHERE   e.id_comp = 42
        AND ae.id_ev IS NULL

关于MySQL 连接 - 数据不在第二个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10849505/

相关文章:

mysql - SQL - 如果另一个表存在则删除行

mysql - mysql 中的 'IN' 运算符中可以存在的值数量是否有限制?

mysql - SQL 查询返回特定标签(如果存在)(如果不存在则返回 0)

使用 COALESCE 和 LEFT OUTER JOIN 的 SQL 查询

join - 使用条件对连接查询进行序列化

mysql - #1064 导入数据库 php mysql localhost 时出错

php - 如何捕获 fatal error

mysql - 将欧元和美元符号插入到mysql中的列中

sql - 使用内连接两次

mysql - 通过内部连接或左/右连接替换与标量子查询的比较