select t.编号,isnull(a.数量,0) as A数量,isnull(b.数量,0) as B数量 (select 编号 from 表A union select 编号 from 表B)t left join 表A a on t.编号=a.编号 left join 表B b on t.编号=b.编号
----or 更简洁的 select 编号=isnull(a.编号,b.编号),A数量=isnull(a.数量,0),B数量=isnull(b.数量,0) from 表A a full join 表B b on a.编号=b.编号
--测试--创建测试表 create table 表a(编号 int,数量 int) create table 表b(编号 int,数量 int) --插入测试数据 insert 表a select 1,1 union select 2,2 insert 表b select 2,5 union select 3,7 --查询 select 编号=isnull(a.编号,b.编号),A数量=isnull(a.数量,0),B数量=isnull(b.数量,0) from 表A a full join 表B b on a.编号=b.编号 --结果 /* 编号 A数量 B数量 ----------- ----------- ----------- 2 2 5 3 0 7 1 1 0(所影响的行数为 3 行)*/
(select 编号 from 表A union select 编号 from 表B)t
left join 表A a
on t.编号=a.编号
left join 表B b
on t.编号=b.编号
select 编号=isnull(a.编号,b.编号),A数量=isnull(a.数量,0),B数量=isnull(b.数量,0)
from 表A a
full join 表B b
on a.编号=b.编号
create table 表a(编号 int,数量 int)
create table 表b(编号 int,数量 int)
--插入测试数据
insert 表a
select 1,1 union select 2,2
insert 表b
select 2,5 union select 3,7
--查询
select 编号=isnull(a.编号,b.编号),A数量=isnull(a.数量,0),B数量=isnull(b.数量,0) from 表A a full join 表B b on a.编号=b.编号
--结果
/*
编号 A数量 B数量
----------- ----------- -----------
2 2 5
3 0 7
1 1 0(所影响的行数为 3 行)*/