gpt4 book ai didi

带有 REPLACE 的更新语句中的 mysql 案例

转载 作者:可可西里 更新时间:2023-11-01 08:08:08 25 4
gpt4 key购买 nike

我目前有这样的东西:

UPDATE table1  SET column1 = REPLACE(column1, 'abc', 'abc1') WHERE column1 LIKE '%abc%';
UPDATE table1 SET column1 = REPLACE(column1, 'def', 'def1') WHERE column1 LIKE '%def%';

我正在尝试将这些合并到一个更新语句中并正在尝试以下操作:

UPDATE table1
SET column1 =
CASE
WHEN column1 LIKE '%abc%' THEN REPLACE(column1, 'abc', 'abc1')
WHEN column1 LIKE '%def%' THEN REPLACE(column1, 'def', 'def1')
ELSE column1
END;

这是正确的做法吗?我是 case/when 的新手。谢谢!

最佳答案

由于您使用的是 LIKE '%abc%',更新语句将需要全表扫描。在这种情况下,结合这两个语句将提高整体性能。但是,在您的建议中,每一行都进行了更新,并且其中大部分都在没有更改的情况下进行了更新(column1 值被 column1 值替换)。

您要确保保留 WHERE 子句,以便仅更改真正需要更改的行。这种不必要的磁盘写入比检查行是否符合条件要慢。

这样做:

UPDATE table1
SET column1 =
CASE
WHEN column1 LIKE '%abc%' THEN REPLACE(column1, 'abc', 'abc1')
WHEN column1 LIKE '%def%' THEN REPLACE(column1, 'def', 'def1')
END
WHERE column1 LIKE '%abc%' OR column1 LIKE '%def%';

关于带有 REPLACE 的更新语句中的 mysql 案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4216605/

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