从表中删除重复的行

dev*_*per 4 mysql sql duplicates

我的数据库中有一个表,我有要删除的重复记录.我不想为此创建一个包含不同条目的新表.我想要的是从现有表中删除重复的条目,而不创建任何新表.有没有办法做到这一点?

 id           action
 L1_name      L1_data
 L2_name      L2_data
 L3_name      L3_data   
 L4_name      L4_data
 L5_name      L5_data
 L6_name      L6_data
 L7_name      L7_data
 L8_name      L8_data
 L9_name      L9_data
 L10_name     L10_data
 L11_name     L11_data
 L12_name     L12_data
 L13_name     L13_data 
 L14_name     L14_data
 L15_name     L15_data
Run Code Online (Sandbox Code Playgroud)

看到这些都是我的字段:
id对于每一行都是唯一的.
L11_data对于相应的动作字段是唯一的.
L11_data有公司名称,而行动有行业名称.

因此,在我的数据中,我在L11_data中为各自的行业提供了重复的公司名称.

我想要的是拥有存储在行动中的特定行业中公司的唯一名称和其他数据.我希望我以一种人们可以理解的方式陈述我的问题.

Roe*_*ler 13

是的,假设您有一个唯一的ID字段,您可以删除除ID之外的所有相同记录,但不包含其值组的"最小ID".

示例查询:

DELETE FROM Table
WHERE ID NOT IN
(
SELECT MIN(ID)
FROM Table
GROUP BY Field1, Field2, Field3, ...
)
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 我自由选择"表"和"ID"作为代表名称
  • 字段列表("Field1,Field2,...")应包括除ID之外的所有字段
  • 这可能是一个缓慢的查询,具体取决于字段和行的数量,但我希望与替代品相比可以

编辑:如果您没有唯一索引,我的建议是简单地添加一个自动增量唯一索引.主要是因为它的设计很好,但也因为它可以让你运行上面的查询.