gpt4 book ai didi

php mysql 更新所有字段

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

很抱歉问了一个小问题。我想翻译我的数据库的一些字段,该数据库有一百万行。所以我想做的是读取字段1并执行翻译函数并将其写入字段3,并且分别需要将字段2写入字段4。

初始表格字段 ID|字段 1 |字段 2 |字段 3|字段 4|
1 |苹果|梨|空 |空 |
2 |香蕉|菠萝|空 |空 |

最终结果表翻译(苹果)- yabloko

字段 ID|字段 1 |字段 2 |字段 3|字段 4|
1 |苹果|梨| yablogo |grusha |
2 |香蕉|菠萝|香蕉|凤梨|

我已经有了翻译功能,问题是如何执行这适用于所有一百万行。如何正确构建通过它的循环? (肯定有一些 ID 丢失,因为一些数据已被删除)。

提前非常感谢您!!!

最佳答案

规范模式不是“构造一个循环”并逐行处理,而是在单个语句中执行操作。

我会填充一个翻译表:

CREATE TABLE my_translation
( old_word VARCHAR(100) NOT NULL PRIMARY KEY
, new_word VARCHAR(100)
) Engine=InnoDB;
INSERT INTO my_translation (old_word, new_word) VALUES
('apple' ,'yablogo')
,('pear' ,'grush')
,('banana' ,'banan')
,('pineapple','ananas);

然后进行更新。棘手的部分是,如果没有匹配项,则保持 field_3field_4 不变。

UPDATE my_table t
LEFT
JOIN my_translation c3
ON c3.old_word = t.field_1
LEFT
JOIN my_translation c4
ON c4.old_word = t.field_2
SET t.field_3 = IF(c3.old_word IS NULL,t.field_3,c3.new_word)
, t.field_4 = IF(c4.old_word IS NULL,t.field_4,c4.new_word)

注意:如果这是一次性操作,我可能会考虑将其作为插入新表的操作,然后交换表名并更改外键引用,以将新表替换旧表.

关于php mysql 更新所有字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28118006/

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