sql比对两个表中的差异数据比较的sql语句
直接上图:各位大神:我想以一个sq语句l实现以下结果,我用了leftjoinrightjoin以及fullouterjoin全没实现啊,哪位大神有办法吗?小弟感激不尽啊…...
直接上图:
各位大神:我想以一个sq语句l实现以下结果,我用了left join right join 以及 full outer join全没实现啊,哪位大神有办法吗?小弟感激不尽啊…………急急急 展开
各位大神:我想以一个sq语句l实现以下结果,我用了left join right join 以及 full outer join全没实现啊,哪位大神有办法吗?小弟感激不尽啊…………急急急 展开
3个回答
展开全部
select
base.name, base.year
, a.成绩 as [a表成绩]
, b.成绩 as [b表成绩]
, case
when a.成绩 is null then 'a表中不存在'
when b.成绩 is null then 'b表中不存在'
when a.成绩=b.成绩 then '成功'
else '差异' end as 比较结果
from (
select name, year from tb_a
union
select name, year from tb_b
) as base
left join tb_a as a on a.name=base.name and a.year=base.year
left join tb_b as b on b.name=base.name and b.year=base.year
追问
大侠,它都报 base.name, base.year的列名无效啊
追答
"base" 是 "
(
select name, year from tb_a
union
select name, year from tb_b
)
"的别名
这里面是有name, year的 -- 除非你的数据库不支持,否则应该不会有这样的报错。
是Access?
展开全部
select a.*,b.*, iif(b.name is null, '表b中不存在','成功')
from a left join b on a.name=b.name and a.year=b.year
union
select a.*,b.*, iif(a.name is null, '表a中不存在','成功')
from a right join b on a.name=b.name and a.year=b.year
以上表名及列名换成你自己的
from a left join b on a.name=b.name and a.year=b.year
union
select a.*,b.*, iif(a.name is null, '表a中不存在','成功')
from a right join b on a.name=b.name and a.year=b.year
以上表名及列名换成你自己的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主,你好!跟你确认下,结果表的数据跟表A和表B的数据不一致,是不是弄反了?
追问
你好,没有错这就是我想要的结果
追答
张三 2011年的成绩不在表A中,你看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询