如果想创建 (A, B, C) 唯一索引,而数据库中存在重复元组,例如:
ID | A | B | C | D |
---|---|---|---|---|
1 | 1 | 2 | 3 | 4 |
2 | 1 | 2 | 3 | 5 |
3 | 1 | 2 | 3 | 6 |
4 | 8 | 9 | 10 | 4 |
5 | 8 | 9 | 10 | 5 |
6 | 8 | 9 | 10 | 6 |
如果重复的元组是等价的,我们只想保留其中一条那么可以这样,用一个相关子查询将每组重复的最后一条记录保留,其余的挑出来:
1 | select * from table_name where id not in ( |
备份上面的数据,运行删除:
1 | delete from table_name where id not in ( |
结果如下:
ID | A | B | C | D |
---|---|---|---|---|
3 | 1 | 2 | 3 | 6 |
6 | 8 | 9 | 10 | 6 |