我有父表+引用表,引用表如下
Ref_ID PARENT_ID
-------------------
1 1
2 1
1 2
3 2
1 3
3 3
4 3
2 4
3 4
尝试返回所有不同的父行,其中ref_id在( 2,3)中使用联接而不是使用子查询,但通过联接查询为父级返回了重复项
任何帮助我们都将不胜感激
仅供参考-查询中有4-7个表(取决于用户选择),因此性能是一个重要因素
发布于 2012-09-27 14:31:40
好的,
首先是代码
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,所以他返回了这两个。它们都与查询规则匹配
发布于 2012-09-27 14:14:04
尝尝这个
select distinct parent_field1,parent_field2
from parent left outer reference
on parent.parent_id=reference.parent_id
where reference.ref_id(2,3)
https://stackoverflow.com/questions/12614551
复制相似问题