我有两个INSERT
命令,这对我来说是无用的,因为两组行 - 已经在表中的行,以及我作为INSERT
命令的行 - 是不要分开。这两个命令都插入了大量的行和很多值。
因此,如果我想执行这些行,则会出现重复输入错误。
有没有简单的方法可以将这些命令“转换”为UPDATE
?
我知道这听起来很愚蠢,因为如果我想INSERT
,我为什么要发出UPDATE
命令。只是为了使它成为一个明确的场景:另一位开发人员给了我脚本:)
提前致谢, 丹尼尔
编辑 - 问题已解决
首先我创建了一个表并用INSERT
命令填充它,然后我使用了以下REPLACE
命令:
REPLACE
INTO table_1
SELECT *
FROM table_2;
找到
答案 0 :(得分:15)
MySQL的REPLACE
关键字就是这样做的。只需使用单词INSERT
替换查询中的REPLACE
关键字,它就应该更新行而不是插入新行。请注意,它仅在您插入主键或唯一键列时才有效。
答案 1 :(得分:0)
您必须手动将其重写为更新。如果我遇到这样的问题,我首先查询某个主键的计数,如果没有找到,我插入一个通用数据集并在之后更新它。这样,可以添加新数据并更新现有数据,您不必区分插入新数据和更新数据。
答案 2 :(得分:0)
对于MySQL,您可以使用INSERT IGNORE
或INSERT ... ON DUPLICATE UPDATE
语法。请参阅MySQL reference manual
答案 3 :(得分:0)
您可以轻松修改查询以更新重复行,请参阅MySQL中的INSERT ... ON DUPLICATE KEY语法