首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >上下级参照SQL查询

上下级参照SQL查询
EN

Stack Overflow用户
提问于 2012-09-27 13:18:47
回答 2查看 679关注 0票数 0

我有父表+引用表,引用表如下

代码语言:javascript
运行
复制
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个表(取决于用户选择),因此性能是一个重要因素

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-27 14:31:40

好的,

首先是代码

代码语言:javascript
运行
复制
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,所以他返回了这两个。它们都与查询规则匹配

票数 0
EN

Stack Overflow用户

发布于 2012-09-27 14:14:04

尝尝这个

代码语言:javascript
运行
复制
select distinct parent_field1,parent_field2 
from parent left outer reference
on parent.parent_id=reference.parent_id
where reference.ref_id(2,3)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12614551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档