我有一个表,其中包含一些重复的redords。我想使记录独特。我创建了一个新表(例如目标),并在其中指定了唯一的列。如何从table1(源)复制记录,使得如果记录插入到目标表中,则不会再次插入记录。
最佳答案
您可以使用“ select into”构造并选择仅插入不同的行,如下所示:
insert into table_without_dupes (column0, column1) select distinct column0, column1 from table_with_dupes
如果您具有自动递增或其他使行与众不同的列,则可以将其排除在插入之外,然后选择语句的一部分。
编辑:
如果要通过单个列检测重复项,则可以使用group by:
insert into table_without_dupes (column0, column1) select column0, column1 from table_with_dupes group by column0
MySQL将允许您在select中引用未聚合的列,但请记住documentation表示“服务器可以从每个组中自由选择任何值”,如果要选择组中的特定行,则可能会发现this示例很有用。