我正在使用Workbench,我不是SQL方面的专家,但总是愿意学习。
我的目标是一次更新多个表,并在所有找到的结果上进行替换。
类似的东西:
SELECT * FROM *.*;
UPDATE *.* SET post_content = REPLACE(post_content,'data-exclude="direct"','');
但是语法错误。我有100多个需要更新的数据库,所以我宁愿不必列出每个数据库。
此外,如果有帮助,我正在每个数据库中编辑同一张表,因此,如果还有另一种解决方法,那就太好了。该表在每个数据库中都有不同的前缀,但始终以_posts
结尾提前谢谢!
答案 0 :(得分:1)
正如我在评论中指出的那样,您将必须动态写出每个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客户端并执行。