日期:2014-05-19  浏览次数:20517 次

弱弱的问一个,关于两表相连
table   a:
[a1]
ax1
ax2

[b1]
bx1
bx2

怎样得出结果:
[a1]   [b1]
ax1       null
ax2       null
null     bx1
null     bx2



------解决方案--------------------
declare @a table (a1 varchar(4))
insert @a
select 'ax1 ' union all
select 'ax2 '

declare @b table(b1 varchar(4))
insert @b
select 'bx1 ' union all
select 'bx2 '
--查看结果

--连接查询
select a1,null as b1 from @a
union all
select null as a1,b1 from @b
/*
a1 b1
---- ----
ax1 NULL
ax2 NULL
NULL bx1
NULL bx2

(所影响的行数为 4 行)

*/
------解决方案--------------------
--创建测试数据
declare @a table(id int,a1 varchar(10))
insert @a select 1, 'ax1 '
union all select 2, 'ax2 '
declare @b table(id int,b1 varchar(10))
insert @b select 1, 'bx1 '
union all select 2, 'bx2 '
--查看测试数据
select * from @a
select * from @b
--查看结果1
select id,a1,null as b1 from @a
union all
select id,null,b1 from @b
/*
id a1 b1
----------- ---------- ----------
1 ax1 NULL
2 ax2 NULL
1 NULL bx1
2 NULL bx2

(所影响的行数为 4 行)
*/
--查看结果2
select * from (
select id,a1,null as b1 from @a
union all
select id,null,b1 from @b ) t
order by id
/*
id a1 b1
----------- ---------- ----------
1 ax1 NULL
1 NULL bx1
2 NULL bx2
2 ax2 NULL

(所影响的行数为 4 行)*/
------解决方案--------------------
declare @a table(id int,a1 varchar(10))
insert @a select 1, 'ax1 '
union all select 2, 'ax2 '
declare @b table(id int,b1 varchar(10))
insert @b select 1, 'bx1 '
union all select 2, 'bx2 '
select a.a1,b.b1 from @a a full outer join @b b on a.a1=b.b1