主题:请教怎样找出两个表中的不同姓名
stxinhui
[专家分:0] 发布于 2008-09-07 23:20:00
请问两个表中,怎样找出不同的记录,比如:表1有100人,表2有98人,怎样找出两个表中这两个多余的或不同的?以姓名作索引
回复列表 (共7个回复)
沙发
qjbzjp [专家分:8830] 发布于 2008-09-08 08:52:00
SELECT dist 姓名 FROM 表1 WHERE !表1.姓名 IN (SELECT 表2.姓名 FROM 表2 GROUP BY 1)
感谢cbl518老师指教!
板凳
cbl518 [专家分:57140] 发布于 2008-09-08 09:09:00
SELECT 姓名 FROM 表1 WHERE !表1.姓名 IN (SELECT 表2.姓名 FROM 表2 GROUP BY 1)
3 楼
cbl518 [专家分:57140] 发布于 2008-09-08 09:30:00
此处不要添加 dist 参数!
添加后,会把原来主表的同值纪录去掉。
dist 参数的效率太低,使用不好容易出现不正确的结果。
如果要用,就用 GROUP BY 参数取代它!
4 楼
lwh1188 [专家分:25840] 发布于 2008-09-08 12:18:00
从另一角度看,排除相同姓名的,剩下的就是不同姓名的!
5 楼
stxinhui [专家分:0] 发布于 2008-09-08 14:50:00
谢谢两位老师的指点,我试运行之后,正常,但要显示出这两个不同的姓名是谁要加哪一句?谢谢!现在根据你们的程式显示的是空白表。
6 楼
cbl518 [专家分:57140] 发布于 2008-09-08 16:19:00
[quote]
谢谢两位老师的指点,我试运行之后,正常,但要显示出这两个不同的姓名是谁要加哪一句?谢谢!现在根据你们的程式显示的是空白表。[/quote]
[quote]表1有100人,表2有98人。[/quote]
你把表1 和 表2 搞混了!
SELECT 姓名 FROM lx2 WHERE !lx2.姓名 IN (SELECT lx1.姓名 FROM lx1 GROUP BY 1)
7 楼
qjbzjp [专家分:8830] 发布于 2008-09-08 16:28:00
一定是表1的记录<表2,而且表1中的所有姓名表2中都存在,表1中肯定找不出与表2不同的姓名了。
按你的提问“比如:表1有100人,表2有98人”应该是表1的记录>表2。你把SQL命令中的表1、表2位置倒一下看看。
我来回复