gpt4 book ai didi

MySQL 更新 CASE WHEN/THEN/ELSE

转载 作者:IT老高 更新时间:2023-10-28 12:53:15 24 4
gpt4 key购买 nike

我正在尝试使用 CLI 脚本更新 LARGE MyISAM 表(2500 万条记录)。该表没有被其他任何东西锁定/使用。

我认为与其对每条记录执行单个 UPDATE 查询,不如利用 CASE 功能。

id 字段是 PRIMARY。我怀疑以下查询需要几毫秒。

UPDATE `table` SET `uid` = CASE
WHEN id = 1 THEN 2952
WHEN id = 2 THEN 4925
WHEN id = 3 THEN 1592
END

你瞧,查询占用了 CPU 并且不会永远完成。

然后,令我惊讶的是,我发现查询正在更新所有 2500 万行,在我没有指定的行上放置了一个 NULL。

这样做的目的是什么?我可以在每次执行此查询时只对特定行进行 MASS 更新而不更新 2500 万行吗?还是我必须进行个别更新然后提交?

最佳答案

试试这个

UPDATE `table` SET `uid` = CASE
WHEN id = 1 THEN 2952
WHEN id = 2 THEN 4925
WHEN id = 3 THEN 1592
ELSE `uid`
END
WHERE id in (1,2,3)

关于MySQL 更新 CASE WHEN/THEN/ELSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12754470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com