-4

在我的数据库中,我有大约 30 个表,每个表都有一emp_number (INT)列。

如何更新emp_number所有 30 个表中的值?

4

4 回答 4

3

您可以使用长的单个查询,例如:

UPDATE table1, table2, table3, ...
SET
  table1.emp_number = 30,
  table2.emp_number = 30,
  table3.emp_number = 30,
  ...

这是一个SQLFiddle

于 2013-07-01T13:31:10.847 回答
2

如果您使用的是 MS SQL,请尝试以下操作:

sp_msforeachtable " UPDATE ? SET emp_number='YOUR VALUE'"
于 2013-07-01T13:33:31.407 回答
2

如果您使用的是 MySQL,请执行以下命令:

USE information_schema;
SELECT CONCAT('UPDATE ', table_name, ' SET emp_number = 30;')
FROM columns
WHERE table_schema = 'mydatabase'
AND column_name = 'emp_number'

要获得这样的输出:

然后执行生成的查询。

如果您需要从 PHP 或类似工具运行查询,请将其写入存储过程。

于 2013-07-01T13:29:36.997 回答
1

为了获得最佳答案,您应该包括您正在使用的 RDBMS。无论如何,我相信这是相当通用的:

您可以使用以下方式获取包含该列的表的列表INFORMATION_SCHEMA

select TABLE_SCHEMA, TABLE_NAME 
from INFORMATION_SCHEMA.COLUMNS
where COLUMN_NAME = 'emp_number'

然后,使用 acursor遍历表列表并为每个表动态创建和运行更新语句。

于 2013-07-01T13:27:40.413 回答