[英]SQL Self-Join Query
我是一名上Oracle數據庫課程的學生,我一生無法解決這個問題。 如果您能提供幫助,我將不勝感激。
每個人都有一個配偶,他也是一個人。
表名:人類
記錄:
H#=主鍵,S#=外鍵
問題:“顯示配偶與他人結婚的人。例如,如果101的配偶是102,則102的配偶應該是101。但是,在此表中,103的配偶是104,而104的配偶是105。找到所有此類不匹配的記錄。”
我知道這個問題需要一個自聯接,但是我創建的所有自聯接要么返回所有記錄,要么不返回任何記錄。
看起來很簡單,您只需要基於一個s#與另一張表中的h#匹配但不相反的條件進行自連接。
SELECT
h1.h#
,h1.name
FROM
humans AS h1
JOIN humans AS h2
ON h1.s# = h2.h# AND h2.s# <> h1.h#
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.