SQL – 在一个查询中更新多个logging

我有表 – configuration 。 架构: config_name | config_value config_name | config_value

我想在一个查询中更新多个logging。 我尝试那样:

 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); 

这会在表中插入新的值,但是如果主键重复(已经插入到表中),那么您指定的值将被更新,并且相同的logging不会被第二次插入。

也许有人会有用的

对于Postgresql 9.5来说是一种魅力

 INSERT INTO tabelname(id, col2, col3, col4) VALUES (1, 1, 1, 'text for col4'), (DEFAULT,1,4,'another text for col4') ON CONFLICT (id) DO UPDATE SET col2 = EXCLUDED.col2, col3 = EXCLUDED.col3, col4 = EXCLUDED.col4 

此SQL更新现有logging并插入新(2合一)

在我的情况下,我不得不更新超过1000的logging,为此,而不是每次我喜欢这个更新查询,

  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适用于我。

如果要更新所有列中的所有logging,请执行以下代码:

 update config set column1='value',column2='value'...columnN='value'; 

如果你想更新一个特定行的所有列然后执行下面的代码:

 update config set column1='value',column2='value'...columnN='value' where column1='value'