请教大家两表查询的问题?

Logix5000 2014-10-13 03:17:52
有两个表:
表A
用户名 帐号 数值
A1 60 100
A1 35 120
A1 48 110
......

表B
用户名 帐号 数值
A1 60 90
A1 35 110
A1 48 100
A1 23 90
A1 54 130
......

想得到以下的结果:
用户名 帐号 数值
A1 60 100
A1 35 120
A1 48 110
A1 23 90
A1 54 130

就是在结果中两表中同一用户名的数据合并在一起,表A中有的数据就用表A的,表A中没有的数据就用表B的,这个SQL语句要怎么写呢?先谢谢大家了!!!

...全文
88 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaodongni 2014-10-13
  • 打赏
  • 举报
回复


with  a as 
(select 'a1' as 用户名 , 60 as 账号,100 as 数值 Union all
select 'a1' as 用户名 , 35 as 账号,120 as 数值 Union all
select 'a1' as 用户名 , 48 as 账号,110 as 数值 ),
b  as 
(select 'a1' as 用户名 ,60 as 账号,90 as 数值 Union all
select 'a1' as 用户名 , 35 as 账号,110 as 数值 Union all
select 'a1' as 用户名 , 48 as 账号,100 as 数值 Union all
select 'a1' as 用户名 , 23 as 账号,90 as 数值 Union all
select 'a1' as 用户名 , 54 as 账号,130 as 数值 )
select b.用户名,b.账号,ISNULL(a.数值,b.数值) as 数值
 from b left  join a
on a.用户名=b.用户名 and a.账号=b.账号


--结果
用户名  账号          数值
---- ----------- -----------
a1   60          100
a1   35          120
a1   48          110
a1   23          90
a1   54          130

(5 行受影响)
xiaodongni 2014-10-13
  • 打赏
  • 举报
回复
[code=sql ] with a as (select 'a1' as 用户名 , 60 as 账号,100 as 数值 Union all select 'a1' as 用户名 , 35 as 账号,120 as 数值 Union all select 'a1' as 用户名 , 48 as 账号,110 as 数值 ), b as (select 'a1' as 用户名 ,60 as 账号,90 as 数值 Union all select 'a1' as 用户名 , 35 as 账号,110 as 数值 Union all select 'a1' as 用户名 , 48 as 账号,100 as 数值 Union all select 'a1' as 用户名 , 23 as 账号,90 as 数值 Union all select 'a1' as 用户名 , 54 as 账号,130 as 数值 ) select b.用户名,b.账号,ISNULL(a.数值,b.数值) as 数值 from b left join a on a.用户名=b.用户名 and a.账号=b.账号 --结果 用户名 账号 数值 ---- ----------- ----------- a1 60 100 a1 35 120 a1 48 110 a1 23 90 a1 54 130 (5 行受影响) [/code]
wtujedp 2014-10-13
  • 打赏
  • 举报
回复
select * from a union all select * from b where 帐号 not in (select 帐号 from a)
昵称被占用了 2014-10-13
  • 打赏
  • 举报
回复
select 
用户名 = isnull(a.用户名,b.用户名)
, 帐号 = isnull(a. 帐号,b. 帐号)
, 数值 = isnull(a.数值,b.数值)
from a full join b
on a.用户名= b,用户名 and a. 帐号= b. 帐号 
昵称被占用了 2014-10-13
  • 打赏
  • 举报
回复
select * from A union select * from B where not exists ( select 1 from a where 用户名 = b.用户名 and 帐号 = b.帐号 )
exception92 2014-10-13
  • 打赏
  • 举报
回复
select distinct * from ( select * from A union select * from B )
reenjie 2014-10-13
  • 打赏
  • 举报
回复
select 用户名, 帐号, 数值 from 表A union all select 用户名, 帐号, 数值 from 表B as b where not exists (select 用户名, 帐号, 数值 from 表A where 用户名=b.用户名 and 帐号=b.帐号)
Mr_Nice 2014-10-13
  • 打赏
  • 举报
回复
select * from A union select * from B

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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