我的数据库中有这些表格:
Id_People | Name_People
1米尔顿
2阿拉贡
3 Legolas
我和爸爸和儿子一起创建了一个像这样的表:
Id_Dad | Id_Son
1 2
2 3
如何编写查询以获取包含Son和Dad列共有的ID的记录(例如:上表中的id 2)?
答案 0 :(得分:0)
效率不高;但它为输出数据提供了更大的灵活性。我们使用自联接和表别名连接到Dad / Son表(我称之为关系),使用INNER连接将保证只返回父亲和儿子的记录。
Select R.*, R2.*
FROM Relationship R
INNER JOIN Relationship R2
on R.ID_Son = R.ID_Dad
根据所需的现场输出,这是最有效的方式;但它限制了可用于输出的数据。此方法使用相关子查询来获取儿子也是父亲的所有记录。
SELECT R.*
FROM Relationship R
WHERE EXISTS (SELECT 1 from RelationShip R2 where R.ID_Son = R2.ID_DAD)
在这两种情况下,由于有多个孩子,每位父亲可以返回超过1条记录。但它保证记录既是父亲又是"儿子"