如何更新数据库中所有表的所有记录?

时间:2016-08-24 11:28:03

标签: php mysql database performance

我有一张包含大量记录的表格(可能超过500 000或1 000 000)。 我想在整个数据库的所有表中更新一些具有相同字段名称的公共列。

我知道将单独的查询写入单个表的传统方法,但不知道一个查询来更新所有表的所有记录。

在SQL中执行此操作的最有效方法是什么,不使用某些特定于方言的功能,因此它可以在任何地方使用(Oracle,MSSQL,MySQL,PostGre等)?

附加信息:没有计算字段。有索引。使用生成的SQL语句逐行更新表。

1 个答案:

答案 0 :(得分:2)

(这听起来像是对'专栏'进行标准化的经典案例。)

无论如何......没有。没有一个查询可以在所有表​​中找到该列,然后在每个表上执行UPDATE

在MySQL中,您可以使用表information_schema.COLUMNS来查找包含特定命名列的所有表。使用这样的SELECT,您可以生成(使用CONCAT()等)所需的UPDATE语句。但是,您需要手动运行它们(通过复制和粘贴)。

当然,您可以编写一个存储过程来将其包装到单个调用中,但这样做风险太大。如果某个其他表具有相同的列名但不应更新该怎么办?

对于多个供应商的通用代码 - 忘了!事实上,每种语法都需要进行一些调整。