删除 mySQL 中的相同记录
Remove identical records in mySQL
我有列 ID、A 和 B。在表 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
——以防万一。
我有列 ID、A 和 B。在表 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
——以防万一。