关于Full join 连接查询

hfyanzi 2007-08-25 05:31:31
两张表如下:
表A 表B
a b c a b c
100 x 32 100 x 3
100 y 31 100 b 12
100 z 42 100 n 32
201 y 43 201 w 10
201 q 23 333 x 43

语句如下:
SELECT A.IceNo, A.ProductId, ISNULL(A.c, 0) - ISNULL(B.c, 0)
AS c
FROM A FULL OUTER JOIN
B ON A.a = B.a AND A.b = B.b

得到如下结果:
a b c
100 x 29
100 y 31
100 z 42
NUll NUll -12
NUll NUll -32
201 y 43
201 q 23
NUll NUll -10
NUll NUll -43

而我想要得到的结果是:
a b c
100 x 29
100 y 31
100 z 42
100 b -12
100 n -32
201 y 43
201 q 23
201 w -10
201 x -43

请各位指教,谢谢!

...全文
357 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hfyanzi 2007-08-25
  • 打赏
  • 举报
回复
谢谢楼上两位,周末还来帮助解决问题,万分感谢!
Limpire 2007-08-25
  • 打赏
  • 举报
回复
谢谢鱼兄!

我想差不多,一两万条数据,误差应该在毫秒级别。
paoluo 2007-08-25
  • 打赏
  • 举报
回复
這個,沒有測試過,其實這個我也用的不多。
Limpire 2007-08-25
  • 打赏
  • 举报
回复
TO:paoluo(一天到晚游泳的鱼(學習.NET中))

偶现学现卖:p,为了熟练coalesce,这里用上了。

想顺便问问,只有两个的情况coalesce和isnull哪个效率高?谢谢!
Limpire 2007-08-25
  • 打赏
  • 举报
回复
declare @a table(a int, b char(1), c int)
insert @a
select 100,'x',32 union all
select 100,'y',31 union all
select 100,'z',42 union all
select 201,'y',43 union all
select 201,'q',23
declare @b table(a int, b char(1), c int)
insert @b
select 100,'x',3 union all
select 100,'b',12 union all
select 100,'n',32 union all
select 201,'w',10 union all
select 333,'x',43

select a = coalesce(a.a,b.a), b = coalesce(a.b,b.b),c = isnull(a.c,0)-isnull(b.c,0) from @a a full join @b b on a.a = b.a and a.b = b.b
/*
a b c
100 x 29
100 b -12
100 n -32
201 w -10
333 x -43
201 y 43
100 y 31
100 z 42
201 q 23
*/
paoluo 2007-08-25
  • 打赏
  • 举报
回复
加上兩個isnull即可
paoluo 2007-08-25
  • 打赏
  • 举报
回复
SELECT IsNull(A.IceNo, B.IceNo) As IceNo, IsNull(A.ProductId, B.ProductId) As ProductId, ISNULL(A.c, 0) - ISNULL(B.c, 0)
AS c
FROM A FULL OUTER JOIN
B ON A.a = B.a AND A.b = B.b
Limpire 2007-08-25
  • 打赏
  • 举报
回复
错了,没详细看,看一下先
Limpire 2007-08-25
  • 打赏
  • 举报
回复
不是用JOIN,是用UNION吧:

select * from A union all
select * from B

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧