0

我需要创建一个查询,如果存在则更新,如果不some know value存在则创建一个寄存器。

我在下面尝试了一些类似的变体,但我无法让它发挥作用。

我怎样才能做到这一点?

尝试:

UPDATE OR INSERT
    mytable
SET
    attribute1 = 'value1',
    attribute2 = 'value2',
    attribute3 = 'some known value'
WHERE
    attribute3 = 'some known value'
4

3 回答 3

1

@GarouDan您的传递仅用于更新查询没有插入查询使用下面这样的代码..首先查找是否有任何带有attribute3 ='some known value'的记录..对于这样的使用..

declare xattribute text;
select attribute3 into xsttribute where attribute3 = 'some known value'
if found
UPDATE  mytable
SET
    attribute1 = 'value1',
    attribute2 = 'value2',
    attribute3 = 'some known value'
WHERE
    attribute3 = 'some known value'
else
 insert into mytable(attribute1 ,attribute3 ,attribute3 ) values (value1,value2,some known value)
于 2013-05-15T17:45:19.313 回答
0

也许 MySQL 命令 REPLACE 是您正在寻找的。一个例子:

replace into cars (color,crashed) values ('black',0);
于 2013-05-15T17:40:32.330 回答
0

您应该使用 mysql 的 INSERT...ON DUPLICATE KEY UPDATE 语法:

http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html

于 2013-05-15T18:42:33.433 回答