select
basename, baseyear
, 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 aname=basename and ayear=baseyear
left join tb_b as b on bname=basename and byear=baseyear
如果你知道哪个表记录多的话,比如A多了
SELECT A,B FROM TABLEA A
LEFT JOIN TABLEB B ON AID=BID
这样能连出A表所有记录,B表没有的那些会以NULL值出现
查出没有的在语句后面加个条件
WHERE BID IS NULL
如果两个数据库可以建立dblink,那么通过dblink就可以像在一个数据库一样去对比。
如果不能建立dblink,那么就只能导出两行表,通过spool导出就可以。然后通过系统级别的命令去比对。我记得linux是有比较两个文件不同行的功能的。
如果认为两个都导出比较麻烦,那就导出一个,在导入另外一个库(注意变换名字,否则表明重复就麻烦了),然后再对比。
SELECT adate_3 - bdate_3 FROM tab1 a,tab2 b WHERE bnumb = anumb
前提是tab1和tab2都要有对应的numb
你好!
先获取不重复的ID,即x、y表的不重复并集,观察x、y表结构类似,通过union进行排重即可。
使用第一步获取的数据进行左链接x、y表的扩展表(第3步)。
分别对x、y表进行分组并合计,针对中y表中ID为A的记录出现多次,最后显示为ID为A的盘点数量为2,这样的数据进行处理,以方便最后显示。
通过(库存数-盘点数)得到比对字段值。
SELECTtID,
IFNULL(t`库存数量`, 0) `库存数量`,
IFNULL(t`盘点数量`, 0) `盘点数量`,
(
IFNULL(t`库存数量`, 0) - IFNULL(t`盘点数量`, 0)
) `比对`
FROM
(
SELECT
aID ID,
p1`库存数量`,
p2`盘点数量`
FROM
(
SELECT
ID
FROM
x
UNION
SELECT
ID
FROM
y
) a
LEFT JOIN (
SELECT
ID,
sum(`库存数量`) `库存数量`
FROM
x
GROUP BY
ID
) p1 ON aid = p1id
LEFT JOIN (
SELECT
ID,
sum(`盘点数量`) `盘点数量`
FROM
y
GROUP BY
ID
) p2 ON aid = p2id
) t
ORDER BY
ID
希望对你有帮助!
SELECT 表AZH_LABLE,表BZH_LABLE
FROM 表A FULL JOIN 表B ON 表AZH_LABLE=表BZH_LABLE
WHERE 表AZH_LABLE IS NULL OR 表BZH_LABLE IS NULL
insert
into
tablea
select
from
tablea
where
not
exists
(selelct
'1'
from
tableb
where
tableaserverid
=
serverid
and
tableadriverid
=
driverid
and
tableadriversize
=
driversize)
update
tablea
set
tableadriversize
=
tableadriversize
from
tablea
,tableb
where
tableaserverid
=
serverid
and
tableadriverid
=
driverid
如果你以tableb为准的话,你最好在tableb上加个触发器
以上就是关于两个数据库中相同表的对比sql语句怎么写全部的内容,包括:两个数据库中相同表的对比sql语句怎么写、sql数据库中如何对比两张表,求语句!!!!、在oracle中 怎样对比两个数据库中相同表的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)