将INSERT命令转换为UPDATE

时间:2010-09-11 21:22:42

标签: mysql insert-update

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

因此,如果我想执行这些行,则会出现重复输入错误。

有没有简单的方法可以将这些命令“转换”为UPDATE

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

提前致谢, 丹尼尔

编辑 - 问题已解决

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

REPLACE
    INTO table_1
SELECT *
    FROM table_2;

最初可以在How can I merge two MySQL tables?

找到

4 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

对于MySQL,您可以使用INSERT IGNOREINSERT ... ON DUPLICATE UPDATE语法。请参阅MySQL reference manual

答案 3 :(得分:0)

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