回 帖 发 新 帖 刷新版面

主题:请教怎样找出两个表中的不同姓名

请问两个表中,怎样找出不同的记录,比如:表1有100人,表2有98人,怎样找出两个表中这两个多余的或不同的?以姓名作索引

回复列表 (共7个回复)

沙发

SELECT dist 姓名 FROM 表1 WHERE  !表1.姓名 IN (SELECT 表2.姓名 FROM 表2 GROUP BY 1)

感谢cbl518老师指教!

板凳

SELECT 姓名 FROM 表1 WHERE !表1.姓名 IN (SELECT 表2.姓名 FROM 表2 GROUP BY 1)

3 楼

此处不要添加  dist  参数!

添加后,会把原来主表的同值纪录去掉。
dist 参数的效率太低,使用不好容易出现不正确的结果。

如果要用,就用  GROUP BY 参数取代它!

4 楼

从另一角度看,排除相同姓名的,剩下的就是不同姓名的!

5 楼


谢谢两位老师的指点,我试运行之后,正常,但要显示出这两个不同的姓名是谁要加哪一句?谢谢!现在根据你们的程式显示的是空白表。

6 楼

[quote]
谢谢两位老师的指点,我试运行之后,正常,但要显示出这两个不同的姓名是谁要加哪一句?谢谢!现在根据你们的程式显示的是空白表。[/quote]
[quote]表1有100人,表2有98人。[/quote]
 你把表1 和 表2 搞混了!
SELECT 姓名 FROM lx2 WHERE !lx2.姓名 IN (SELECT lx1.姓名 FROM lx1 GROUP BY 1)

7 楼

一定是表1的记录<表2,而且表1中的所有姓名表2中都存在,表1中肯定找不出与表2不同的姓名了。
按你的提问“比如:表1有100人,表2有98人”应该是表1的记录>表2。你把SQL命令中的表1、表2位置倒一下看看。
   

我来回复

您尚未登录,请登录后再回复。点此登录或注册