Office中国论坛/Access中国论坛

标题: [救助]如何删除成对重复记录? [打印本页]

作者: chinelu    时间: 2007-4-26 09:26
标题: [救助]如何删除成对重复记录?
如下所示,红蓝双方成配对关系,如何删除成对重复的记录(如ID1、2与9、10,3、4与7、8重复)?    点击浏览该文件

ID   红蓝双方名称     红蓝双方数量
1       红一团               5000
2       蓝一团               4800
3       红二团               5500
4       蓝二团               5300
5       红三团               5050
6       蓝三团               5200
7       红二团               5500
8       蓝二团               5300
9       红一团               5000
10     蓝一团               4800

[此贴子已经被作者于2007-4-26 2:24:24编辑过]


作者: eyewitnes    时间: 2007-4-26 16:01
DELETE SAMPLE.红蓝双方名称, SAMPLE.红蓝双方数量, SAMPLE.ID
FROM SAMPLE
WHERE (((SAMPLE.红蓝双方名称) In (SELECT [红蓝双方名称] FROM [SAMPLE] As Tmp GROUP BY [红蓝双方名称],[红蓝双方数量] HAVING Count(*)>1  And [红蓝双方数量] = [SAMPLE].[红蓝双方数量])));

作者: chinelu    时间: 2007-4-26 18:18
谢谢eyewitnes的帮助,不过抱歉的是,因为打字太匆忙,以上问题少了一个条件,即要求保留成对重复记录中ID值最小的一个,请看附件。
作者: eyewitnes    时间: 2007-4-30 18:44
DELETE SAMPLE.ID, SAMPLE.红蓝双方名称, SAMPLE.红蓝双方数量, (select count(sample.红蓝双方名称) as autonum from sample  where (sample.id<=sample_1.id and sample.红蓝双方名称= sample_1.红蓝双方名称)) AS tmpNo
FROM SAMPLE INNER JOIN SAMPLE AS SAMPLE_1 ON SAMPLE.ID = SAMPLE_1.ID
WHERE ((((select count(sample.红蓝双方名称) as autonum from sample  where (sample.id<=sample_1.id and sample.红蓝双方名称= sample_1.红蓝双方名称)))>1));
想了好久才想出来

如果只是查询而不需要从表中删除的话可以将这个查询改为普通查询,然后将">1"改为"=1"

[此贴子已经被作者于2007-4-30 10:47:39编辑过]


作者: chinelu    时间: 2007-5-1 03:10
谢谢大侠援助,好像该句有点问题。能否再指点一下。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3