2013-05-15 4 views
0

Мне нужно создать запрос, который обновляется, если существует some know value или создать регистр, если нет.Mysql. INSERT, UPDATE и WHERE

Я попробовал несколько вариантов, как показано ниже, но я не могу заставить его работать.

Как я могу это сделать?

Attemp:

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

Это называется "upsert". См .: http://stackoverflow.com/questions/1218905/how-do-upupate-if-exists-insert-if-not-aka-ups-or-merge-in-mysql/1218909#1218909 – Tom

+0

Что делать вы имеете в виду «создать регистр»? –

+0

Вы ищете [upsert] (http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html)? –

ответ

0

Возможно, команда MySQL REPLACE является то, что вы ищете. Пример:

replace into cars (color,crashed) values ('black',0); 
1

не @GarouDan вашего прохождения только для запроса обновления не использовать вставки запроса ниже кода, как это .. первой находки есть ли запись с attribute3 = «некоторыми известными значениями» .. для такого использования, как это ..

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) 
+0

Если вы согласны, проголосовать за меня – Haji

Смежные вопросы