读书人

sql有关问题~

发布时间: 2012-01-31 21:28:41 作者: rapoo

sql问题~~`

CREATE TABLE [A] (
[id] [bigint] NOT NULL ,
[id1] [int] NULL ,
[id2] [int] NULL ,
) ON [PRIMARY]
GO
CREATE TABLE [B] (
[id] [bigint] NOT NULL ,
[id1] [int] NULL ,
[id2] [int] NULL ,
) ON [PRIMARY]
GO

insert into A values( '1 ', '1 ', '0 ' )
insert into A values( '2 ', '2 ', '0 ' )
insert into A values( '3 ', '3 ', '0 ' )

insert into B values( '1 ', '1 ', '3 ' )
insert into B values( '2 ', '2 ', '2 ' )
insert into B values( '3 ', '3 ', '1 ' )

两表的关系是 A.id=B.id2

select * from A left join B on A.id=B.id2
能得到这个:
idid1id2 idid1 id2
-------------------------------------------------
110331
220222
330113


我却想要这样的:

idid1id2
----------------------
110 (A表)
331 (B表)
220 (A表)
222 (B表)
330 (A表)
113 (B表)

上周没有解决 现在在线求教~ 没有分了 实在对不起~

drop table A
drop table B


[解决办法]

select id,id1,id2 from (
select id as f,* ,1 as c from A
union
select id2 as f,* ,2 as c from B) a
order by a.f,c

读书人网 >SQL Server

热点推荐