在一台服务器上更新多个数据库/表

x8goxv8g  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(361)

我正在使用workbench,我不是sql方面的Maven,但总是乐于学习。
我的目标是一次更新多个表,并对所有找到的结果进行替换。
比如:

SELECT * FROM *.*;
UPDATE *.* SET post_content = REPLACE(post_content,'data-exclude="direct"','');

但是语法是错误的。我有100多个数据库需要更新,所以我不想把每一个都列出来。
另外,如果有帮助的话,我会在每个数据库中编辑同一个表,所以如果有其他方法,那就太棒了。表在每个数据库中都有不同的前缀,但总是以:\u posts结尾
提前谢谢!

jutyujz0

jutyujz01#

正如我在注解中指出的,您必须动态地写出每个update语句,然后执行每个动态生成的语句。您可以编写一个脚本或过程来实现这一点,也可以编写一些sql来标识包含您要查找的列名的数据库/表,并按以下方式写出update语句:

SELECT DISTINCT CONCAT('UPDATE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` SET post_content = REPLACE(post_content,''data-exclude="direct"'','''');') as statement
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'post_content';

或者类似的((未测试)
然后只需将结果复制/粘贴回sql客户机并执行。

相关问题