给定一个关系人(id,name,momid,dadid)
归还所有兄弟姐妹(即那些有共同的妈妈,爸爸)
例如1,2
所以在这个查询中,我需要连续导致所有兄弟姐妹,每行有一对兄弟姐妹。
我的解决方案不太确定它是否有效..它是
select p1.id,p2.id
from person p1,person p2
where p1.momid=p2.momid
and p1.dadid=p2.dadid
我相信它是写入解决方案,但它产生了一行1,1所以查询逻辑错了吗?
答案 0 :(得分:2)
p1和p2都可以是您查询中的同一个人,因为您并不是说它们应该是不同的。您可以添加该条件,它应该可以正常工作;
SELECT p1.id, p2.id
FROM person p1, person p2
WHERE p1.momid = p2.momid
AND p1.dadid = p2.dadid
AND p1.id <> p2.id
答案 1 :(得分:1)
否则正确,但您必须通过添加AND p1.id <> p2.id
来过滤掉引用同一个人的记录,如下所示:
select p1.id,p2.id
from person p1,person p2
where p1.momid=p2.momid
and p1.dadid=p2.dadid and p1.id <> p2.id