【问题标题】:Keep one duplicate in MySQL table and delete the rest [duplicate]在 MySQL 表中保留一个副本并删除其余的 [重复]
【发布时间】: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 条目对。

【问题讨论】:

标签: mysql duplicates


【解决方案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

【讨论】:

    猜你喜欢
    • 2012-04-12
    • 1970-01-01
    • 2016-09-18
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    相关资源
    最近更新 更多