繁体   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