我是一名学生参加Oracle数据库课程并且在我的生活中我无法弄清楚这个问题。如果你能提供帮助我真的很感激。
每个人都有一个配偶,也是一个人。
表名:人类
记录:
H#=主键,S#=外键
问题: “显示配偶与其他人结婚的人。例如,如果101的配偶是102,那么102的配偶应该是101.但是,在这张表中,103的配偶是104,但104的配偶是105.写一个查询来查找所有这种不匹配的记录。“
我知道这个问题需要自我加入,但我创建的所有自联接要么返回所有记录,要么不返回任何内容。
答案 0 :(得分:2)
看起来很简单,你只需要根据一个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#