簡體   English   中英

SQL自聯接查詢

[英]SQL Self-Join Query

我是一名上Oracle數據庫課程的學生,我一生無法解決這個問題。 如果您能提供幫助,我將不勝感激。

每個人都有一個配偶,他也是一個人。

表名:人類

記錄:

  • H#HName S#
  • 101亞當102
  • 102前夕101
  • 103辛迪104
  • 104大衛105
  • 105艾倫·空
  • 106坦率的107
  • 107喬治106

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM