我想要进行查询以选择用户未注册的所有研讨会信息。我想通过 1 次查询获得所有数据。
这是:研讨会表 : 登记表 :workshop_rounds表
希望你们中的一些人可以帮助我。 提前致谢!
我已经尝试过这个查询,但它不是我想要的,它很接近但不完全。
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))
但现在我也不想获得与用户注册的回合具有相同 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/