我有config号桌.

我想在一个查询中更新多个记录.我试着这样:

UPDATE config 
SET t1.config_value = 'value'
  , t2.config_value = 'value2' 
WHERE t1.config_name = 'name1' 
  AND t2.config_name = 'name2';

但这种质疑是错误的:(

你能帮助我吗?

推荐答案

try 使用多表更新语法

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

这里是100演示

或条件更新

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

这里是100演示

Mysql相关问答推荐

MariaDB /SQL僵局-并发插入

配置MySQL服务器以管理数千个表

MySQL在使用SELECT*时不使用索引

约会时的意外行为

返回包含某一列的分组最大值的行,说明列中的重复值

是否可以使用 IN 或 NOT IN 从没有关联其他表中任何行的表中返回这些名称?

Travis 构建失败并出现错误 LOAD DATA LOCAL INFILE 文件请求因访问限制而被拒绝

如何在 WampServer 上重新初始化 MySQL 以允许 lower_case_table_names = 2

仅当 SELECT 语句在 MySQL 中给出空集时才执行 UPDATE 语句

如何编写一个查询,计算表中每个日期的一个日期加上前 4 天的记录数?

在 MySQL 中跨日期和位置计算和排序实体的共现

需要按总金额检索前 3 个供应商,每个类别 - 子类别

在 SQL 中的 case 语句之后将新列转换为 INT

我将如何构建一个 SQL 查询来从交易表中 Select 第一次存款、第二次存款和额外存款

MySQL查询根据同一表中其他字段的值更新表中的字段

如何在sql中挑出某些名称

MySql,将日期和时间列组合成时间戳

MySql - 默认情况下主键是唯一的吗?

从一个带有连接的表中删除

在 MySQL 中重命名外键列