簡體   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