我有一个表,其中包含一些重复的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示例很有用。

10-08 02:17