14

我有两个INSERT命令,这对我来说是无用的,因为两组行 - 已经在表中的行,以及我作为INSERT命令的行 - 不是分离的。这两个命令都插入了很多行和很多值。

因此,如果我想执行这些行,我会收到重复输入错误。

有什么简单的方法可以将这些命令“转换”成UPDATE?

我知道这听起来很愚蠢,因为INSERT如果我愿意,我为什么要发出命令UPDATE。只是为了使它成为一个清晰的场景:另一个开发人员给了我脚本:)

在此先感谢,丹尼尔

编辑- 问题已解决

首先,我创建了一个表并用我的INSERT命令填充它,然后我使用了以下REPLACE命令:

REPLACE
    INTO table_1
SELECT *
    FROM table_2;

这最初可以在以下位置找到:如何合并两个 MySQL 表?

4

4 回答 4

16

MySQL 的REPLACE关键字就是这样做的。只需将INSERT查询中的关键字替换为单词REPLACE,它就会更新行而不是插入新行。请注意,它仅在您插入主键或唯一键列时才有效。

于 2010-09-11T21:39:53.223 回答
0

您必须手动将它们重写为更新。如果遇到这样的问题,我首先查询某个主键的计数,如果没有找到,我插入一个通用数据集并在之后更新它。这样,可以添加新数据并更新现有数据,您不必区分插入新数据和更新数据。

于 2010-09-11T21:27:26.753 回答
0

对于 MySQL,您可以使用 theINSERT IGNORE或 theINSERT ... ON DUPLICATE UPDATE语法。请参阅MySQL 参考手册

于 2010-09-11T21:39:27.047 回答
0

您可以轻松修改查询以更新重复行,请参阅MySQL 中的INSERT ... ON DUPLICATE KEY语法

于 2010-09-11T21:41:31.883 回答