父子参考SQL查询
问题描述:
我有父+参考表,其中 参考表如下父子参考SQL查询
Ref_ID PARENT_ID
-------------------
1 1
2 1
1 2
3 2
1 3
3 3
4 3
2 4
3 4
试图返回WHERE REF_ID在(2,3) 使用连接,而不是使用所有不同父行子查询 但重复正在经由连接查询
返回父任何帮助理解
FYI - 有在查询表4-7(取决于用户选择),因此性能是一个巨大的因素
答
好吧,
首先代码
DECLARE @Temp TABLE(
Ref_ID int,
ParentID int
)
INSERT INTO @Temp VALUES (1 , 1)
INSERT INTO @Temp VALUES (2 , 1)
INSERT INTO @Temp VALUES (1 , 2)
INSERT INTO @Temp VALUES (3 , 2)
INSERT INTO @Temp VALUES (1 , 3)
INSERT INTO @Temp VALUES (3 , 3)
INSERT INTO @Temp VALUES (4 ,3)
INSERT INTO @Temp VALUES (2 , 4)
INSERT INTO @Temp VALUES (3 , 4)
--First Example witout Ref_ID
SELECT
DISTINCT ParentID
FROM @Temp
WHERE Ref_ID IN (2,3)
--SECOND Example With Ref_ID
SELECT
DISTINCT ParentID,
Ref_ID
FROM @Temp
WHERE Ref_ID IN (2,3)
第一个查询返回PARENTID的一个独特的记录。它工作正常,因为我还没有要求Ref_Id。
只是为了向您解释您在申请Ref_ID时的情况,查询会尝试返回不同的ParentID。但看看你的记录,你有两个ParentID的等于4 但与不同的Ref_ID,所以他返回他们俩。他们都符合查询规则
答
试试这个
select distinct parent_field1,parent_field2
from parent left outer reference
on parent.parent_id=reference.parent_id
where reference.ref_id(2,3)
感谢您的洞察力,我猜想我希望可能有一个“神奇的条款”,以无效或子查询无效:) – Kumar