在一个查询中更新多个记录
我有表 - 配置 。 架构: config_name | config_value
config_name | config_value
我想在一个查询中更新多个记录。 我尝试这样做:
UPDATE config
SET t1.config_value = 'value'
, t2.config_value = 'value2'
WHERE t1.config_name = 'name1'
AND t2.config_name = 'name2';
但该查询是错误的:(
你可以帮我吗?
尝试使用多表更新语法
UPDATE config t1 JOIN config t2
ON t1.config_name = 'name1' AND t2.config_name = 'name2'
SET t1.config_value = 'value',
t2.config_value = 'value2';
这里是SQLFiddle演示
或有条件的更新
UPDATE config
SET config_value = CASE config_name
WHEN 'name1' THEN 'value'
WHEN 'name2' THEN 'value2'
ELSE config_value
END
WHERE config_name IN('name1', 'name2');
这里是SQLFiddle演示
你可以用INSERT完成它,如下所示:
INSERT INTO mytable (id, a, b, c)
VALUES (1, 'a1', 'b1', 'c1'),
(2, 'a2', 'b2', 'c2'),
(3, 'a3', 'b3', 'c3'),
(4, 'a4', 'b4', 'c4'),
(5, 'a5', 'b5', 'c5'),
(6, 'a6', 'b6', 'c6')
ON DUPLICATE KEY UPDATE id=VALUES(id),
a=VALUES(a),
b=VALUES(b),
c=VALUES(c);
这将新值插入表中,但是如果主键重复(已插入到表中),则您指定的值将被更新,并且同一记录不会被第二次插入。
在我的情况下,我不得不更新超过1000个记录,为此,而不是每次我更喜欢这个命中更新查询时,
UPDATE mst_users
SET base_id = CASE user_id
WHEN 78 THEN 999
WHEN 77 THEN 88
ELSE base_id END WHERE user_id IN(78, 77)
78,77是用户ID和那些用户ID我需要分别更新base_id 999和88.This适用于我。
链接地址: http://www.djcxy.com/p/16875.html