MYSQL 如何一条语句更改不同的数据

在尝试修改一个表中的多条数据时,如果使用循环来执行多条SQL会消耗更长的时间
例如用户表users需要更新字段a,将id为1的字段a修改为50,同时将id为2的字段a修改为100
可以尝试使用下面的方法

$arr = [
    [
        "id" => 1,
        "a" => 50,
    ],
    [
        "id" => 2,
        "a" => 100
    ]
];
$sql = "UPDATE users SET a = CASE id";
for ($a = 0; $a < count($arr); $a++) {
    $sql .= ' WHEN ' . $arr[$a]['id'] . ' THEN ' . $arr[$a]['a'];
}
$sql .= ' ELSE a END';
Db::query($sql);//执行SQL
//sql语句
UPDATE users 
SET a = CASE id 
WHEN 1 THEN 50 
WHEN 2 THEN 100 
ELSE 默认
END

公式

UPDATE 表名 
SET 字段名 = CASE 条件字段名
WHEN 条件值 THEN 修改值
WHEN 条件值 THEN 修改值
END

给TA打赏
共{{data.count}}人
人已打赏
程序代码

Typecho第一款选项框架 jkOptionsFramework

2022-5-9 12:15:41

程序代码

Typecho 站长工具箱 jkSiteHelper

2022-6-12 20:13:38

2 条回复 A文章作者 M管理员
  1. 你这个游客的缓存时间有点短,我上个月评论过,这次评论还要我填写资料,太不方便了

  2. 大佬,你的那个wxfans插件生成的api.php文件没有内容了,不知道咋回事。求解。

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索