本文主要是介绍sql2000利用查询命令进行数据比对,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
日常工作中,我们经常把一份电子表格的内容(尤其是数据)录入到电脑系统中,但很多时候录入完成后发现录入的结果有错误,与电子表格的内容(例如:统计求和)有出入,但数据量又太大,如何快速找出哪些人员录错了呢,也就是说如何高效的进行数据比对呢。以下图中我们假设姓名(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
)
这篇关于sql2000利用查询命令进行数据比对的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!