当前位置:首页 » 编程语言 » 对比俩张表数据sql
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

对比俩张表数据sql

发布时间: 2023-01-16 08:52:36

‘壹’ sql语句:对比两张表的数据并筛选出数据不同的

SQL语句对比两张表的数据并筛选出数据不同的公式如下:

select A.* from A, B
where A.A1=B.B1 -- 相同主键,做表连接.


and A.A2 <> B.B2 -- 条件:A2不等于B2.


and A.A3 <> B.B3 -- 条件:A3不等于B3.

‘贰’ 用sql语句如何将两张表中的一列数据进行比对。

你好!

  1. 先获取不重复的ID,即x、y表的不重复并集,观察x、y表结构类似,通过union进行排重即可。

  2. 使用第一步获取的数据进行左链接x、y表的扩展表(第3步)。

  3. 分别对x、y表进行分组并合计,针对图片中y表中ID为A的记录出现多次,最后显示为ID为A的盘点数量为2,这样的数据进行处理,以方便最后显示。

  4. 通过(库存数-盘点数)得到比对字段值。

SELECT
t.ID,
IFNULL(t.`库存数量`,0)`库存数量`,
IFNULL(t.`盘点数量`,0)`盘点数量`,
(
IFNULL(t.`库存数量`,0)-IFNULL(t.`盘点数量`,0)
)`比对`
FROM
(
SELECT
a.IDID,
p1.`库存数量`,
p2.`盘点数量`
FROM
(
SELECT
ID
FROM
x
UNION
SELECT
ID
FROM
y
)a
LEFTJOIN(
SELECT
ID,
sum(`库存数量`)`库存数量`
FROM
x
GROUPBY
ID
)p1ONa.id=p1.id
LEFTJOIN(
SELECT
ID,
sum(`盘点数量`)`盘点数量`
FROM
y
GROUPBY
ID
)p2ONa.id=p2.id
)t
ORDERBY
ID

希望对你有帮助!

‘叁’ sql数据库中的两个表的记录进行比较

问题补充:

select N'ab',N'ab',N'bc',N'bc',N'abc',N'ab',N'ab',N'ac',N'abc',N'ab'
select N'ab',N'ab',N'bc',N'bc',N'abc',N'ab',N'ab',N'ac',N'abc',N'ab'
微软专家吴熹
能否解释一下上面的语句是什么意思,因为我要比较几万条记录,不会要这样每条都写入程序吧!
A表中有几万条记录,B表中有800条记录,A表中的每条记录和B表中的每条记录进行比较,A表的每条记录和B表800条记录比较后把比较结果写到A表记录新增的800条字段里进行存储

---------------------------------
以上脚本是生成测试数据,加上N''--用生成nvarchar符号,有特殊字符时可加上。

两个表要通过主健关连 加上条件 where a.ID=b.ID,不加条件时,需要保证A表只有一条数据.

没主健时多对多关系会产生笛卡尔结果集

--> --> (Roy)生成测试数据

declare @A table([1] nvarchar(1),[2] nvarchar(1),[3] nvarchar(1),[4] nvarchar(1),[5] nvarchar(1),[6] nvarchar(1),[7] nvarchar(1),[8] nvarchar(1),[9] nvarchar(1),[10] nvarchar(1))
Insert @A
select N'a',N'c',N'a',N'b',N'a',N'b',N'c',N'c',N'a',N'b'

--> --> (Roy)生成测试数据

declare @B table([1] nvarchar(2),[2] nvarchar(2),[3] nvarchar(2),[4] nvarchar(2),[5] nvarchar(3),[6] nvarchar(2),[7] nvarchar(2),[8] nvarchar(2),[9] nvarchar(3),[10] nvarchar(2))
Insert @B
select N'ab',N'ab',N'bc',N'bc',N'abc',N'ab',N'ab',N'ac',N'abc',N'ab'

Select a.*,
case when b.[1] like '%'+a.[1]+'%' then 1 else 0 end+
case when b.[2] like '%'+a.[2]+'%' then 1 else 0 end+
case when b.[3] like '%'+a.[3]+'%' then 1 else 0 end+
case when b.[4] like '%'+a.[4]+'%' then 1 else 0 end+
case when b.[5] like '%'+a.[5]+'%' then 1 else 0 end+
case when b.[6] like '%'+a.[6]+'%' then 1 else 0 end+
case when b.[7] like '%'+a.[7]+'%' then 1 else 0 end+
case when b.[8] like '%'+a.[8]+'%' then 1 else 0 end+
case when b.[9] like '%'+a.[9]+'%' then 1 else 0 end+
case when b.[10] like '%'+a.[10]+'%' then 1 else 0 end as 新列

from @A a,@B b

(1 行受影响)
1 2 3 4 5 6 7 8 9 10 新列
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- -----------
a c a b a b c c a b 7

(1 行受影响)

‘肆’ SQL如何对比两张表的数据

insert
into
tablea
select
*
from
tablea
where
not
exists
(selelct
'1'
from
tableb
where
tablea.serverid
=
serverid
and
tablea.driverid
=
driverid
and
tablea.driversize
=
driversize)
update
tablea
set
tablea.driversize
=
tablea.driversize
from
tablea
,tableb
where
tablea.serverid
=
serverid
and
tablea.driverid
=
driverid
如果你以tableb为准的话,你最好在tableb上加个触发器

‘伍’ SQL两个表数据对比

selecta.*,'相同数据'asnotefrom表Aaleftjoin表Bb
ona.name=b.name
wherea.age=b.age
unionall
select*,'不相同数据'asnotefrom表Acwherec.namenotin
(
selecta.namefrom表Aaleftjoin表Bb
ona.name=b.name
wherea.age=b.age
)orc.agenotin
(
selecta.agefrom表Aaleftjoin表Bb
ona.name=b.name
wherea.age=b.age
)
unionall
select*,'不相同数据'asnotefrom表Bcwherec.namenotin
(
selecta.namefrom表Aaleftjoin表Bb
ona.name=b.name
wherea.age=b.age
)orc.agenotin
(
selecta.agefrom表Aaleftjoin表Bb
ona.name=b.name
wherea.age=b.age
)

‘陆’ 用SQL查询两个表中相同的数据

1、创建测试表;

create table test_col_1(id number, var varchar2(200));

create table test_col_2(id number, var varchar2(200));

‘柒’ sql两个表数据比较

select count(*) from a
left outer join (select b.编号,sum(b.数量) from b group by b.编号) c on a.编号=c.编号 and a.数量>c.数量

‘捌’ SQL如何对2个表的数据进行对比

a表与b表通过哪个字段可以关联起来,关系是1对多还是多对多

select * from tablesA a
left join tablesB b on a.xx=b.xx
where a.xx1=b.xx1

类似这种

‘玖’ sql查询、对比两个表

select id from works minus select w_id from data_1 --这个运算起来较快,works有的data_1没有
select id from works intersect select w_id from data_1 --两个数据库交叉的部分