mysql - 查询以选择用户未注册的所有研讨会

标签 mysql sql database

我想要进行查询以选择用户未注册的所有研讨会信息。我想通过 1 次查询获得所有数据。

这是:研讨会表 The workshops table : 登记表 The registrations table :workshop_rounds表 The workshop_rounds table

希望你们中的一些人可以帮助我。 提前致谢!

我已经尝试过这个查询,但它不是我想要的,它很接近但不完全。

SELECT * FROM `workshop_rounds` WHERE `id` != ALL (SELECT `workshop_round_id` FROM `registrations` WHERE `user_id` = 1) AND `workshop_id` != ALL (SELECT `workshop_id` FROM `workshop_rounds` WHERE `workshop_id`= ALL (SELECT `workshop_round_id` FROM `registrations` WHERE `user_id` = 1))

结果是: enter image description here

但现在我也不想获得与用户注册的回合具有相同 Workshop_id 的其他回合。希望你能理解我。

最佳答案

使用不存在

SELECT *
FROM workshops w
WHERE NOT EXISTS
(
    SELECT 1
    FROM registrations r
    JOIN "workshop_rounds" wr ON r."workshop_round_id" = wr.id
    WHERE wr.workshop_id = w.id
          AND r."user_id" = 1
);

也许更简洁NOT IN

SELECT *
FROM workshops w
WHERE w.id NOT IN
(
    SELECT wr.workshop_id
    FROM registrations r
    JOIN "workshop_rounds" wr ON r."workshop_round_id" = wr.id
    WHERE r."user_id" = 1
);

关于mysql - 查询以选择用户未注册的所有研讨会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45932614/

相关文章:

sql - 在 SQL 语句中构建动态 where 条件

sql - 为 Microsoft sql server View 中的每一行分配 ID

sql - 如何使用 Distinct ON 计数

mysql - 如何在codeigniter模型中使用mysql事件调度程序

mysql - 有数据完整性测试软件吗?

MySQL:数字格式

java - 为什么数据库连接对象或连接池需要做成单例?

php - Mysql触发器和插入值

sql - 无法在 localdb v\11.0 中创建索引目录

mysql - 为什么 phpmyadmin 中某些表的浏览选项卡被禁用?