使用复杂(NOT MAX)条件从查询中过滤重复项

时间:2015-12-09 15:18:58

标签: sql ms-access

我有一个数据库,其中包含一些客户的多条记录,其地址更改数据库会添加新记录,相同的客户ID号,但新的“ADDCDE”具有更高的索引号。

e.g。

NAME         UNIQUEID     ADDCDE  ADDRESS

Customer A   ID123        Z1      Address1 Town1 City1
Customer A   ID123        Z2      Address2 Town2 City2
Customer A   ID123        Z3      Address3 Town3 City3
Customer B   ID1234       Z1      Address1 Town1 City1
Customer C   ID12345      Z1      Address1 Town1 City1
Customer C   ID12345      Z2      Address2 Town2 City2

我已经能够使用查询向导识别所有重复记录, 但我真正想做的是删除所有但ADDCDE的“最大”记录,所以在这种情况下从上述记录中删除以留下以下内容。

NAME         UNIQUEID     ADDCDE  ADDRESS

Customer A   ID123        Z3      Address3 Town3 City3
Customer B   ID1234       Z1      Address1 Town1 City1
Customer C   ID12345      Z2      Address2 Town2 City2

我是SQL的新手,我主要使用Access Query设计构建器但是如果有人能以某种方式回答这个问题(因为我需要经常这样做),我会弄清楚如何以及在哪里放置它并使它成为工作!

1 个答案:

答案 0 :(得分:0)

您可以使用相关子查询删除除最新地址代码之外的所有地址代码:

delete from t
    where t.addcde < (select max(t2.addcde) from t t2 where t2.uniqueid = t.uniqueid);