日期:2014-05-18  浏览次数:20494 次

SQL语句单表查询的问题,蛮绕的求帮助
比如表中有三列:

ID 名称 上级ID
0 总公司 0 
1 技术部 0
2 研发部 1
3 销售部 0


查询的时候我想查出的是

名称 上级名称
总公司 总公司
技术部 总公司
研发部 技术部
销售部 销售部


大概就是这么个意思,SQL语句怎么写啊有没有大大帮我下~~~~我实在搞不出来了

------解决方案--------------------
SQL code
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([ID] int,[名称] varchar(6),[上级ID] int)
insert [tb]
select 0,'总公司',0 union all
select 1,'技术部',0 union all
select 2,'研发部',1 union all
select 3,'销售部',0

select a.名称,isnull(b.名称,a.名称) as 名称 
from tb a 
left join tb b on a.上级ID=b.id


--测试结果:
/*
名称     名称
------ ------
总公司    总公司
技术部    总公司
研发部    技术部
销售部    总公司

(4 行受影响)
*/

------解决方案--------------------
SQL code

declare @t table (ID int,名称 varchar(6),上级ID int)
insert into @t
select 0,'总公司',0 union all
select 1,'技术部',0 union all
select 2,'研发部',1 union all
select 3,'销售部',0

select a.名称,b.名称 AS 上级名称 from @t a LEFT JOIN @t b ON a.上级ID=b.ID
/*
名称     上级名称
------ ------
总公司    总公司
技术部    总公司
研发部    技术部
销售部    总公司
*/

------解决方案--------------------
直接用