我正在尝试更新整个数据库(所有表)中的每一个匹配项,以便它们全部更新为新的匹配项,使用搜索大约有 4,000 个匹配项,但我似乎无法找出正确的匹配项更新方式
这里的短语
到新文本
这里的短语
到新文本
此处短语
到new-text
这里的短语
到新文本
需要具体情况!
我知道我需要从 Update *
开始,但我看不出如何使用replace(),因为我需要告诉它我需要更改哪个表的字段。
最佳答案
取决于您想要如何实现它,以及它是一次性解决方案还是您需要重新创建并一遍又一遍地执行的解决方案 - 您可以采用一种解决方案,将每个表名称输入到查询中并执行,或者如果您有很多很多表,请创建一个表列表,然后循环访问这些表。所以,假设我们有这样的东西: 更新中 旧表1 --> 新表1 oldtable2 --> newtable2 等等
::每张 table 一次一张:: 使用子查询循环遍历旧表中的列,将它们放入新表中。
USE <YOURDATABASE>;
UPDATE dbo.newTable1
SET col1=col2
WHERE somecolumn IN (SELECT somecolumn FROM YOURDATABASE.dbo.oldTable1
要循环遍历表列表,您可以使用创建表列表
CREATE TABLE myTables
AS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES)
并且根据您的表命名方式,您可以使用旧表的列表来循环使用
CREATE TABLE myTables
AS (SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'old%');
然后,您可以使用更新语句循环浏览这些表及其各自的新表。 此外,您可以使用 MERGE 语句,这可能需要更多的努力,但我认为最终会得到更清晰的结果。
关于mysql - 批量 SQL 更新将整个数据库中的某些短语更改为新短语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31868983/