sql2000利用查询命令进行数据比对

本文介绍了一种在数据录入后快速找出录入错误的方法。通过对比原始电子表格与系统录入的数据,利用SQL查询来高效地找出金额不一致的记录,无论姓名是否在同一行。并提供了更新标记的具体SQL命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         日常工作中,我们经常把一份电子表格的内容(尤其是数据)录入到电脑系统中,但很多时候录入完成后发现录入的结果有错误,与电子表格的内容(例如:统计求和)有出入,但数据量又太大,如何快速找出哪些人员录错了呢,也就是说如何高效的进行数据比对呢。以下图中我们假设姓名(xm,xm01)字段的值是唯一的,我们要根据姓名找出金额(je,je01)不一致的记录。

以上图中,如何前两列是原始的电子表格内容,后两列是我们录入系统后的内容,我们发现有两条记录对应的je和je01的值是不一致的,对应的xm是“岳恒勇”,“崔世泉”。

(一)查询:

方法(一):

select * from bd where xm=xm01 and je<>je01

我们可以看出,这样查找出来的记录是不完全的,只把同一行名字相同的记录找了出来,而xm为岳恒勇的名字出现在不同的行上,所以这条记录没有查找出来,接下来怎么完善查询呢?

小结:此命令只针对xm排好序了,对应一致在同一行上,显然上述表中的xm和xm01对应的顺序是不一致的,所以查询的结果是不正确的

方法(二):

select * from (select xm,je from bd) a , (select xm01,je01 from bd) b where a.xm = b.xm01 and a.je <> b.je01

运行结果如下:


我们可以看见,只要是je和je01不一致的记录都找了出来,不管姓名是不是在同一行上

(二):更新

假如我们想把je和je01不一致的记录的 flag 置为1,用如下命令

update bd
set flag =1
where xm in(
            select xm from (select xm,je,flag from bd) a , (select xm01,je01 from bd) b where a.xm = b.xm01 and a.je <> b.je01
           )


 

如果xm和xm01的顺序一致也可以用如下更新命令:

update bd
set flag = 1
where xm+xm01 in(
                 select xm+xm01 from (select xm,je from bd) a , (select xm01,je01 from bd) b where a.xm = b.xm01 and a.je <> b.je01
                )


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值