我在Microsoft Access中有一个表,其中包括字段(UN、PSN、Class、ClassAll、PG、Priority).我需要删除基于字段(UN、PSN、Class、ClassAll、PG)的重复记录,但仅保留在字段优先级中具有最低优先级值的记录 我try 了以下几种方法:
DELETE FROM tbl
WHERE (UN, PSN, Class, ClassAll, PG, priority) NOT IN (
SELECT UN, PSN, Class, ClassAll, PG, MIN(priority) AS MinPriority
FROM tbl
GROUP BY UN, PSN, Class, ClassAll, PG
);
但是,这会导致错误:
Query must have at least one destination field
个
下面是一个数据的小例子. 粗体标记的值被认为是重复的,因为这些值在字段(UN、PSN、Class、ClassAll、PG)中相同 在本例中,应删除ID为6589和17的记录,并保留具有最低优先级值(ID 120)的记录
SAMPLE DATA个
ID | UN | PSN | Class | classAll | PG | Priority |
---|---|---|---|---|---|---|
120 | 1006 | AUDI | 2.2 | 2.2 | A | 1 |
2 | 1950 | VW | 2.1 | 2.2,8 | A | 11 |
3 | 1950 | VW | 2.1 | 2.2,6.1 | B | 10 |
4 | 1950 | VW | 2.1 | 2.2,6.1,8 | B | 12 |
6589 | 1006 | AUDI | 2.2 | 2.2 | A | 2 |
6 | 1950 | PEUGEOT | 2.2 | 2.2 | B | 18 |
17 | 1006 | AUDI | 2.2 | 2.2 | A | 9 |
DESIRED OUTCOME
ID | UN | PSN | Class | classAll | PG | Priority |
---|---|---|---|---|---|---|
120 | 1006 | AUDI | 2.2 | 2.2 | A | 1 |
2 | 1950 | VW | 2.1 | 2.2,8 | A | 11 |
3 | 1950 | VW | 2.1 | 2.2,6.1 | B | 10 |
4 | 1950 | VW | 2.1 | 2.2,6.1,8 | B | 12 |
6 | 1950 | PEUGEOT | 2.2 | 2.2 | B | 18 |
实现这一目标的正确方式是什么?