| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4699 人关注过本帖
标题:表连接时如何比较多列数据
取消只看楼主 加入收藏
ycvf
Rank: 2
等 级:论坛游民
帖 子:210
专家分:56
注 册:2012-8-25
结帖率:75.61%
收藏
已结贴  问题点数:20 回复次数:10 
表连接时如何比较多列数据
正在学SQL语句,遇到以下问题
要在两表中筛选出身份证或姓名不同的数据,也就是两个表的姓名或身份证任何一个不符的就筛选出来,即使姓名和身份证相同,如果在两表中的班级不同,也筛选出来。
用以下命令提示错误?
sele a.姓名,a.身份证,a.班级,b.姓名,b,班级,b.身份证 from e:/a/一表.dbf a where 身份证 not in(sele  身份证 from e:/a/二表 b)
附件:
a.zip (981 Bytes)
搜索更多相关主题的帖子: 连接 比较 数据 身份证 姓名 
2017-11-28 12:43
ycvf
Rank: 2
等 级:论坛游民
帖 子:210
专家分:56
注 册:2012-8-25
收藏
得分:0 
如果相同姓名和身份证号相同,但是在两表中班级不同,也筛选出来。

落花人独立,微雨燕双飞。
2017-11-28 12:50
ycvf
Rank: 2
等 级:论坛游民
帖 子:210
专家分:56
注 册:2012-8-25
收藏
得分:0 
楼上是以身份证为条件的查询。如果有一表或二表中有两个相同的身份证号,还有同名同姓的,那结果也不一样吧。
那班级不同其它列的值都相同的怎么筛选出来?

落花人独立,微雨燕双飞。
2017-11-28 13:48
ycvf
Rank: 2
等 级:论坛游民
帖 子:210
专家分:56
注 册:2012-8-25
收藏
得分:0 
我的思路是以表一为主表和表2比较,各字段用首字母表示。
sele a.xm,a.sfz,b.xm,b.sfz from 表1 a left join 表2 b on a.xm=b.xm and a.bj=b.bj incur table B  
然后不匹配的字段值为NULL,提取出值为NULL的记录(不知道怎么提取?)
然后再以姓名和班级再次左连接,同时提取出值为NULL的记录。
不知道对吗?


落花人独立,微雨燕双飞。
2017-11-28 18:19
ycvf
Rank: 2
等 级:论坛游民
帖 子:210
专家分:56
注 册:2012-8-25
收藏
得分:0 
目的是找出两表的不同,然后显示出表2与表1不同的记录,如果姓名和身份证相同,怎么判断在两个表中要否班级有变化?

落花人独立,微雨燕双飞。
2017-11-28 18:24
ycvf
Rank: 2
等 级:论坛游民
帖 子:210
专家分:56
注 册:2012-8-25
收藏
得分:0 
以下是引用taifu945在2017-11-28 15:14:53的发言:

SELECT T1.姓名 AS 一表姓名,T1.身份证 AS 一表身份证,T1.班级 AS 一表班级,T2.姓名 AS 二表姓名,T2.身份证 AS 二表身份证,T2.班级 AS 二表班级 ;
  FROM 一表 AS T1, 二表 AS T2 ;
  WHERE (ALLTRIM(T1.姓名)==ALLTRIM(T2.姓名) AND ALLTRIM(T1.身份证)<>ALLTRIM(T2.身份证)) OR ;
     (ALLTRIM(T1.姓名)<>ALLTRIM(T2.姓名) AND ALLTRIM(T1.身份证)==ALLTRIM(T2.身份证)) OR ;
     (ALLTRIM(T1.姓名-T1.身份证)==ALLTRIM(T2.姓名-T2.身份证) AND ALLTRIM(T1.班级)<>ALLTRIM(T2.班级))

T1.姓名-T1.身份证 中间在符号什么意思?

落花人独立,微雨燕双飞。
2017-11-28 18:27
ycvf
Rank: 2
等 级:论坛游民
帖 子:210
专家分:56
注 册:2012-8-25
收藏
得分:0 
以下是引用sdta在2017-11-28 18:27:36的发言:

要想判断两表同一条记录相同字段的不同值,只有两表中的同一条记录RECNO()相同,否则无法精确判断。

所以我尝试左连接两表,相同字段且值(身份证)相同的就在同一条记录,但是怎么判断是否是同一个班?

落花人独立,微雨燕双飞。
2017-11-28 18:48
ycvf
Rank: 2
等 级:论坛游民
帖 子:210
专家分:56
注 册:2012-8-25
收藏
得分:0 
提示语法错误
wher (a.xm-a.sfz=b.xm-b.sfz and a.bj!=b.bj)or (a.sfz=b.sfz and a.bj!=b.bj)

落花人独立,微雨燕双飞。
2017-11-28 19:20
ycvf
Rank: 2
等 级:论坛游民
帖 子:210
专家分:56
注 册:2012-8-25
收藏
得分:0 
以下是引用taifu945在2017-11-28 15:14:53的发言:

SELECT T1.姓名 AS 一表姓名,T1.身份证 AS 一表身份证,T1.班级 AS 一表班级,T2.姓名 AS 二表姓名,T2.身份证 AS 二表身份证,T2.班级 AS 二表班级 ;
  FROM 一表 AS T1, 二表 AS T2 ;
  WHERE (ALLTRIM(T1.姓名)==ALLTRIM(T2.姓名) AND ALLTRIM(T1.身份证)<>ALLTRIM(T2.身份证)) OR ;
     (ALLTRIM(T1.姓名)<>ALLTRIM(T2.姓名) AND ALLTRIM(T1.身份证)==ALLTRIM(T2.身份证)) OR ;
     (ALLTRIM(T1.姓名-T1.身份证)==ALLTRIM(T2.姓名-T2.身份证) AND ALLTRIM(T1.班级)<>ALLTRIM(T2.班级))

在数据很多的情况下,表2会显示很多重复记录。

落花人独立,微雨燕双飞。
2017-11-29 13:07
ycvf
Rank: 2
等 级:论坛游民
帖 子:210
专家分:56
注 册:2012-8-25
收藏
得分:0 
以下是引用taifu945在2017-11-28 15:14:53的发言:

SELECT T1.姓名 AS 一表姓名,T1.身份证 AS 一表身份证,T1.班级 AS 一表班级,T2.姓名 AS 二表姓名,T2.身份证 AS 二表身份证,T2.班级 AS 二表班级 ;
  FROM 一表 AS T1, 二表 AS T2 ;
  WHERE (ALLTRIM(T1.姓名)==ALLTRIM(T2.姓名) AND ALLTRIM(T1.身份证)<>ALLTRIM(T2.身份证)) OR ;
     (ALLTRIM(T1.姓名)<>ALLTRIM(T2.姓名) AND ALLTRIM(T1.身份证)==ALLTRIM(T2.身份证)) OR ;
     (ALLTRIM(T1.姓名-T1.身份证)==ALLTRIM(T2.姓名-T2.身份证) AND ALLTRIM(T1.班级)<>ALLTRIM(T2.班级))

在数据很多的情况下,表2会显示很多重复记录。

落花人独立,微雨燕双飞。
2017-11-29 13:07
快速回复:表连接时如何比较多列数据
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039012 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved