关于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

请各位指教,谢谢!

...全文
413 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
内容概要:本文详细介绍了利用Simulink进行变压器开路试验的电路连接配置与仿真实现方法,重点在于通过仿真手段还原实际电力系统中变压器在空载条件下的电气特性,从而深入理解其工作原理与性能表现。文章作为电力系统仿真系列研究的一部分,系统阐述了从电路模型搭建、参数设定、仿真运行到结果分析的完整流程,突出展示了MATLAB/Simulink在电力设备建模与教学科研中的强大功能与应用价值。; 适合人群:具备电力系统基础知识,熟悉MATLAB/Simulink仿真环境,从事电气工程、自动化及相关领域的研发人员,以及高年级本科生和研究生。; 使用场景及目标:①掌握变压器开路试验的基本原理与Simulink仿真建模的具体步骤;②通过仿真实验深入理解空载电流、铁芯损耗及励磁特性等关键参数的物理意义;③为后续开展变压器短路试验、暂态过程分析以及其他电力设备的仿真研究奠定理论与实践基础。; 阅读建议:建议结合Simulink软件动手实践,逐步构建并调试电路模型,重点关注各元件参数的设置方法与测量模块的应用技巧,同时推荐参考文中提及的其他相关仿真案例进行拓展学习,以全面提升对电力系统仿真实践的整体认知与操作能力。

27,580

社区成员

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

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