繁体   English   中英

从 INNER JOIN 查询返回元组的逆

[英]Return the Inverse of Tuples from an INNER JOIN Query

我正在尝试从查询中获取剩余的元组。 在这种情况下, course_id 3 和 4 来自课程,因为用户 admin@ 没有使用这些(他们只使用了 1 和 2)。 当我尝试 LEFT JOIN 时,这些表已经很好地连接并且查询正在工作......

select course_name from courses LEFT OUTER JOIN users_courses ON users_courses.user_course_id = courses.course_id where users_courses.user_email = "admin@---.com";

但这会返回课程 1 和 2,而不是 3 和 4

在此处输入图像描述

您可以通过像这样获取该用户的课程列表中不存在的所有课程来做另一件事

select course_name from courses where course_id not in (select user_course_id from users_courses where user_email = 'admin@....')

更新

忘记添加列名course_id

啊。 我误解了你所追求的,约瑟夫的方法会奏效,但是,作为一项规则。 你应该尽量避免“in(select ...”)。

要淘汰管理员所学的课程,只需添加 null 条件:

select course_name from courses LEFT OUTER JOIN users_courses
ON users_courses.user_course_id = courses.course_id
and users_courses.user_email = "admin@---.com"
where users_courses.course_id is null;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM