在一个查询中更新多个记录

我有表 - 配置 。 架构: 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

上一篇: Update multiple records in one query

下一篇: C# Equivalent of SQL Server DataTypes