删除 mySQL 中的相同记录

Remove identical records in mySQL

我有列 IDAB。在表 1

ID = 自动编号,主键

A = 外键

B = 外键

这个 table 适用于多对多,我们暂时忽略列 ID。 我需要从多对多中删除重复项。

示例:

+----+---+
| A  | B |
+----+---+
| 1  | 1 |
| 1  | 2 |
| 1  | 1 |
| 1  | 2 |
| 1  | 3 |
| 2  | 1 |
+----+---+

变成

+----+---+
| A  | B |
+----+---+
| 1  | 1 |
| 1  | 2 |
| 1  | 3 |
| 2  | 1 |
+----+---+

删除那些不必要的重复项。 你能帮我查询 MySQL 吗?

对于任何大小的 table,截断 table 并重新插入记录通常比进行大量删除更快。当所讨论的 table 没有主键时尤其如此。

因此,我会推荐这样的东西:

create table temp_table1 as
    select distinct a, b
    from table1;

truncate table table1;

insert into table1(a, b)
    select a, b
    from table1;

当然,在做任何事情之前先复制一份table1——以防万一。