在 MySQL 表中保留一个副本并删除其余的 [重复]
Posted
技术标签:
【中文标题】在 MySQL 表中保留一个副本并删除其余的 [重复]【英文标题】:Keep one duplicate in MySQL table and delete the rest [duplicate] 【发布时间】:2016-02-12 19:14:24 【问题描述】:我想通过删除任何额外的条目来使任何关于两列不唯一的 mysql 表条目唯一。假设我们在下面有 table_A。我只想保留一个条目,其中 col1 和 col2 与另一个条目的相同。 table_A 的示例结果如下面的 table_B 所示。
table_A
id | col1 | col2 | col3
-----------------------
1 | a | 3 | 4
2 | b | 4 | 9
3 | c | 3 | 4
4 | a | 3 | 7
5 | d | 5 | 8
6 | b | 4 | 2
7 | a | 3 | 1
8 | a | 4 | 3
table_B
id | col1 | col2 | col3
-----------------------
1 | a | 3 | 4
2 | b | 4 | 9
3 | c | 3 | 4
5 | d | 5 | 8
8 | a | 4 | 3
注意行
4 | a | 3 | 7
7 | a | 3 | 1
6 | b | 4 | 2
已被删除,因为存在类似的 col1, col2 条目对。
【问题讨论】:
***.com/questions/2630440/… 【参考方案1】:也许只是在 DELETE 上使用连接,检查连接上的 id 更大:-
DELETE tab2
FROM table_a tab1
INNER JOIN table_a tab2
WHERE tab1.col1 = tab2.col1
AND tab1.col2 = tab2.col2
AND tab1.id < tab2.id
SQL 小提琴:-
http://www.sqlfiddle.com/#!9/3b300/1
【讨论】:
以上是关于在 MySQL 表中保留一个副本并删除其余的 [重复]的主要内容,如果未能解决你的问题,请参考以下文章