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

优化union
表名:table1
表结构:
id           parentid       childid
1               11                   22
2               11                   33
3               44                   11  
4               55                   11          

我现在用的sql语句是:
(select   childid   as   A   from   table1   where   parentid= '11 ')   union   (select   parentid   as   A   from   table1   where   childid= '11 '.)

得到的结果是:
    A
    22
    33
    44  
    55

我想问一下,有没有更简单、效率更高的的sql能实现这个功能。

------解决方案--------------------
select
(case when parentid=11 then childid else parentid end) as A
from
table1
where
parentid=11 or childid=11
------解决方案--------------------
id parentid childid
1 11 22
2 11 33
3 44 11
4 55 11


declare @a table(id int identity(1,1),parentid int,childid int)
insert @a
select 11,22
union all
select 11,33
union all
select 44,11
union all
select 55,11
--------------------------
select case when parentid=11 then childid else parentid end a
from @a


得到的结果是:
A
22
33
44
55