gpt4 book ai didi

mysql - 如何设置 MySQL UPDATE 操作的范围?

转载 作者:行者123 更新时间:2023-11-29 22:52:21 26 4
gpt4 key购买 nike

标准免责声明:对于 MySQL,我一无所知。我尝试做事的方式几乎肯定不聪明,并且我愿意接受改进建议。

我有两个数据库:wordpresswordpress3wordpress3wordpress 的副本,已转换为 UTF-8。然而在转换过程中,字符编码错误导致数据丢失。

我的目标:

  1. 找到 wordpress.wp_options 中的所有条目,其中编码为 UTF-8 时的 option_value 与编码为 ASCII 时不同。

  2. 对于上面 #1 描述的每个条目,使用来自 wordpress 的数据(转换为 UTF-8)更新 wordpress3.wp_options 中的相应条目。

我现在正在检查并替换 wp_optionsoption_values 列,作为概念证明。一旦我让它工作起来,我想重新调整它,以便它对数据库中所有表中的所有列执行此操作...但这有点超出了我的要求。

我的脚本:

update wordpress3.wp_options wp3
SET wp3.option_value = (SELECT
CONVERT(wp.option_value using UTF8) from wordpress.wp_options wp
WHERE convert(wp.option_value using ascii) != convert(wp.option_value using utf8)
AND wp.option_id = wp3.option_id)
WHERE [?]

我的问题:

我不知道如何为 UPDATE 命令编写 WHERE 语句(因此是 [?])。如果 WHERE 语句中没有任何内容,我的脚本将按照我希望的方式匹配并更新七行...但是对于与子查询不匹配的所有内容,wp3.option_value 将设置为 NULL .

我可以通过使用 option_name 来明确定义 WHERE 我知道需要替换的选项,如下所示:

WHERE wp3.option_name = 'shortcoder_data';

...但这又慢又笨重。

谢谢!

最佳答案

我使用INNER JOIN连接两个表(wordpress.wp_options wpwordpress3.wp_options wp3)并仅选择其中的条目wp.option_idwp3.option_id 相同,但是 convert(wp.option_value using ascii)convert(wp.option_value使用 utf8) 有所不同:

UPDATE wordpress3.wp_options wp3
INNER JOIN wordpress.wp_options wp ON (wp.option_id = wp3.option_id
AND convert(wp.option_value using utf8) != convert(wp.option_value using ascii))
SET wp3.option_value = convert(wp.option_value using utf8);

这似乎已经成功了。

关于mysql - 如何设置 MySQL UPDATE 操作的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28846351/

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