MySQL插入重复更新多个条件

时间:2017-03-24 14:23:36

标签: mysql sql-update sql-insert on-duplicate-key

我有下表"文本"

+---------+-------------+-------------+-----------+--------------------+
| txt_id  | txt_lang_id | txt_section | txt_code  | txt_value          | 
+---------+-------------+-------------+-----------+--------------------+
|    1    |     1       | home        | txt_title | Home               |
|    2    |     1       | home        | txt_btn   | I'm a button       |
|    3    |     1       | home        | txt_welc  | Welcome to home    |
etc... 

我有多个数据库,每个公司一个,以及创建文本的主数据库,此外,在每个公司,管理员都可以自定义您的文本。

我的想法是创建一个插入每个数据库中创建的新文本的查询,如果它已经存在则更新该值。

可以使查询INSERT INTO ... ON DUPLICATE KEY UPDATE有多个条件,例如txt_lang_id = 1 AND txt_section = 'home' AND txt_code = 'txt_title' SET txt_value = 'New home'

我的想法就是这样,因为相同的功能会将它用于其他表,例如配置,这是一个开始为空的表,并在公司管理员更改默认选项时填充,因此自动对于所有公司,id并不总是以相同的顺序。

可以做这样的事情,或者更确切地说我寻找行总是以相同顺序的方式。感谢。

1 个答案:

答案 0 :(得分:0)

您可以将UPDATECASE一起使用,例如:

INSERT INTO ... ON DUPLICATE KEY UPDATE txt_value = 
(CASE WHEN txt_lang_id = 1 AND txt_section = 'home' 
AND txt_code = 'txt_title' THEN 'New home' else txt_value end);

这里是 SQL Fiddle