以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  sql 语句 update 漏了很多符合条件的记录  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=127190)

--  作者:zhouhai39
--  发布时间:2018/11/7 22:24:00
--  sql 语句 update 漏了很多符合条件的记录


在工作中执行SQL用update语句进行数据比对时,出现大面积遗漏(4218条符合条件记录仅能筛选出1867条遗漏超过50%)是什么回事?怎么办?


 语句:UPDATE {全市学籍系统信息_20180822},{2018年秋季学期高中在校生名单} SE T {2018年秋季学期高中在校生名单}.是否是在系统=\'\' WHERE {全市学籍系统信息_20180822}.证件号码={2018年秋季学期高中在校生名单}.学生身份证号

 

请问是什么原因?怎么办?谢谢!


[此贴子已经被作者于2018/11/7 22:27:04编辑过]

--  作者:有点甜
--  发布时间:2018/11/7 22:41:00
--  
select 连接查询一下两表,看查出来的数据有多少。
--  作者:zhouhai39
--  发布时间:2018/11/7 23:22:00
--  
麻烦老师说具体点(我是初学者),其中一个数据表数据较多,有几十万条,谢谢!
--  作者:有点甜
--  发布时间:2018/11/8 8:49:00
--  

比如执行这个代码连接,看匹配的结果,如果匹配只有1867行,说明你数据本身就是不匹配的,具体原因,参考第二条sql语句

 

Select * from {全市学籍系统信息_20180822} As a Inner join {2018年秋季学期高中在校生名单} As b on a.证件号码=b.学生身份证号

 

Select a.证件号码, b.学生身份证号, * from {全市学籍系统信息_20180822} As a left join {2018年秋季学期高中在校生名单} As b on a.证件号码=b.学生身份证号

 

如果还不会做,实例发上来测试。


--  作者:zhouhai39
--  发布时间:2018/11/8 23:43:00
--  
我发现是数据的类型出了问题,在导入aecc 的源文件excel文件中,身份证号码尽管都是显示的都是文本类型,但我用“数据-分列-文本”转换时,却有些变成了数字型,巧好是这些数据没能比对出来,估计就是数据类型不匹配,但我不懂如何将这些数据转换成与其他数据的类型相一致,网上说的转换方法都用了,就是不行。谢谢!
[此贴子已经被作者于2018/11/8 23:43:27编辑过]

--  作者:有点甜
--  发布时间:2018/11/9 8:54:00
--  

1、看你数据库里面(access)的数据是否正确,是否匹配。执行4楼sql语句测试对比。

 

2、如果access里面没有数据,说明你从excel里面导入的时候没有把数据导入进去。

 

3、你尝试把你的excel文件另存为txt,然后再倒入access里面看看。


--  作者:zhouhai39
--  发布时间:2018/11/10 17:28:00
--  
谢谢!有数据,应该是数据类型不匹配,在未导入access前的Excel中就有些又蓝点有些没用,(但经过数据--分列--文本还是没有变成有蓝点的),后来是导入access后有把它导出Excel然后再导入access,再比对就可以了,可能是反复导入导出后数据类型都变成文本了。谢谢!