我有下表"文本"
+---------+-------------+-------------+-----------+--------------------+
| 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并不总是以相同的顺序。
可以做这样的事情,或者更确切地说我寻找行总是以相同顺序的方式。感谢。
答案 0 :(得分:0)
您可以将UPDATE
与CASE
一起使用,例如:
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 。