gpt4 book ai didi

mysql - 能否将多个update sql合并为一个sql?

转载 作者:行者123 更新时间:2023-11-29 07:25:49 25 4
gpt4 key购买 nike

我有一个更新 sql 列表如下:

UPDATE variable SET type='aa1' WHERE type='aaa';
UPDATE variable SET type='x1' WHERE type='bbb';
UPDATE variable SET type='da1' WHERE type='ccc';
UPDATE variable SET type='ac1' WHERE type='ddd';
-- more update sql

因为有很多sql但是看起来都一样,我想知道我们能不能把它合并成一个sql,如下所示:

UPDATE variable SET type=? WHERE type=?;

我知道我们可以使用CASE WHEN,但是这个解决方案看起来很难看,有没有更优雅的方法来做呢?(也许是键值映射?)

   -- I do not want to do it like this
UPDATE variable
SET type=
(
CASE WHEN type='aa1' THEN 'aaa'
CASE WHEN type='x1' THEN 'bbb'
END
)
WHERE type IN('aa1','x1');

我也知道可以用jdbc之类的程序语言来实现,但是我想看看有没有纯sql的解决方案

提前致谢!

最佳答案

您可以使用JOIN:

UPDATE variable v JOIN
(SELECT 'aa1' as newtype, 'aaa' as oldtype UNION ALL
SELECT 'x1', 'bbb' UNION ALL
SELECT 'da1', 'ccc' UNION ALL
SELECT 'ac1', 'ddd'
) v2
ON v2.oldtype = v.type
SET v.type = v2.newtype;

关于mysql - 能否将多个update sql合并为一个sql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53829988/

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