2014-01-16 2 views
1

При использовании insert... on duplicate key update, что такое синтаксис для обновления нескольких столбцов и не обновления некоторых столбцов?Вставить при повторном обновлении ключа с несколькими значениями

я написал следующий запрос:

INSERT INTO table (id,number,text) VALUES (1,2,3),(3,5,"i want this remain the previous value and not change"),(1,2,3) 
    ON DUPLICATE KEY UPDATE id=VALUES(id), number=VALUES(number), text=VALUES(text); 

как не изменить некоторые значения, и пусть они остаются его предыдущее значение?

ответ

1

Делают это с IF:

INSERT INTO table (id,number,text) VALUES (1,2,3),(3,5,"ZZZ"),(1,2,3) 
    ON DUPLICATE KEY UPDATE id=VALUES(id), number=VALUES(number), text=IF(VALUES(text)="ZZZ", text, VALUES(text)); 

-для нескольких значений используйте IN вместо =:

INSERT INTO table (id,number,text) VALUES (1,2,3),(3,5,"ZZZ"),(1,2,"YYY") 
     ON DUPLICATE KEY UPDATE id=VALUES(id), number=VALUES(number), text=IF(VALUES(text) IN ("ZZZ", "YYY"), text, VALUES(text)); 
+0

спасибо очень много. вы являетесь Мастером MySQL;) –

+0

Можете ли вы сказать мне, как использовать 'IN' вместо' = ' –

+0

@MohammadMasoudian Я обновил –

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