我有父+参考表在哪里 参考表如下
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 in(2,3) 使用连接而不是使用子查询 但是通过连接查询为父级返回重复项
感谢任何帮助
仅供参考 - 查询中有4-7个表(取决于用户选择),因此性能是一个重要因素
答案 0 :(得分:0)
试试这个
select distinct parent_field1,parent_field2
from parent left outer reference
on parent.parent_id=reference.parent_id
where reference.ref_id(2,3)
答案 1 :(得分:0)
确定,
首先是代码
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 ,所以他将两者都返回。它们都匹配查询规则