Sql 查询结果与所需结果不匹配

Sql 查询结果与所需结果不匹配,sql,Sql,给定一个关系人(id、姓名、momid、dadid) 返回所有兄弟姐妹(即具有共同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,那么查询逻辑是否错误?否则正确,但

给定一个关系人(id、姓名、momid、dadid)

返回所有兄弟姐妹(即具有共同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,那么查询逻辑是否错误?

否则正确,但您必须通过添加
和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
选择p1.id,p2.id
来自人员p1、人员p2
其中p1.momid=p2.momid
和p1.dadid=p2.dadid和p1.id p2.id

否则是正确的,但您必须通过添加
和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
选择p1.id,p2.id
来自人员p1、人员p2
其中p1.momid=p2.momid
和p1.dadid=p2.dadid和p1.id p2.id

在您的查询中,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
选择p1.id,p2.id
来自人员p1、人员p2
其中p1.momid=p2.momid
p1.dadid=p2.dadid
和p1.id p2.id

在您的查询中,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
选择p1.id,p2.id
来自人员p1、人员p2
其中p1.momid=p2.momid
p1.dadid=p2.dadid
和p1.id p2.id