mysql - 批量 SQL 更新将整个数据库中的某些短语更改为新短语

标签 mysql sql

我正在尝试更新整个数据库(所有表)中的每一个匹配项,以便它们全部更新为新的匹配项,使用搜索大约有 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/

相关文章:

mysql - 将单个表中的多个字段映射到另一个表中的单个字段的策略

sql - 根据不同的条件添加另一列(SQL 服务器)

sql - 为什么 select top ... order by 索引列仍然排序?

mysql - 如何使用 COUNT 和 GROUP BY 优化 sql 查询

php - Mysql between operator 只显示第一行

php - PDO:将 MySQL 函数传递给 bindValue/bindParam

java - 如何在JOOQ中使用普通SQL作为派生表?

mysql - 在表 SQL 中创建并打印计数

MySQL 基于第二个表列的 'quests' 顺序

java - 将附加参数从应用程序传递给触发器