1
作为示例,请考虑下表。如何使用主键删除SQL表中的重复项
+-------+----------+----------+------------+
| ID(PK)| ClientID | ItemType | ItemID |
+-------+----------+----------+------------+
| 1 | 4 | B | 56 |
| 2 | 8 | B | 54 |
| 3 | 276 | B | 57 |
| 4 | 8653 | B | 25 |
| 5 | 3 | B | 55 |
| 6 | 4 | B | 56 |
| 7 | 4 | B | 56 |
| 8 | 276 | B | 57 |
| 9 | 8653 | B | 25 |
+-------+----------+----------+------------+
我们有一个过程导致我们需要删除的重复项。在上例中,客户端4,276和8653应该只有一个ItemType/ItemID组合。我将如何删除我不需要的额外行。所以在这个例子中,我需要删除ID(PK)6,7,8,9的所有行内容。现在这需要发生在一个更大的范围内,所以我不能一个接一个地去并删除行。是否有一个查询将标识不是最低ID(PK)的所有ID(PK),以便我可以删除它们?我想象一个在子查询上运行的删除语句,但我愿意接受建议。我已经尝试创建一个rownumber来识别重复,但是,因为表中有一个PK,所有的行都是独一无二的,所以对我来说没有任何作用。
谢谢!
编辑:这是预期的结果
+-------+----------+----------+------------+
| ID(PK)| ClientID | ItemType | ItemID |
+-------+----------+----------+------------+
| 1 | 4 | B | 56 |
| 2 | 8 | B | 54 |
| 3 | 276 | B | 57 |
| 4 | 8653 | B | 25 |
| 5 | 3 | B | 55 |
+-------+----------+----------+------------+
显示我们预期的结果。 – jarlh
你正在使用哪些DBMS(包括版本)? – mustaccio
@mustaccio我正在使用RazorSQL来访问Azure SQL数据库。 – acecabana