在我的数据库中,我有大约30个表,每个表都有一个emp_number (INT)
列。
如何在所有30个表格中更新emp_number
的值?
答案 0 :(得分:3)
您可以使用长单个查询,例如:
UPDATE table1, table2, table3, ...
SET
table1.emp_number = 30,
table2.emp_number = 30,
table3.emp_number = 30,
...
这是SQLFiddle。
答案 1 :(得分: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或类似程序运行查询,请将其写入存储过程。
答案 2 :(得分:2)
如果您正在使用MS SQL,请尝试此操作:
sp_msforeachtable " UPDATE ? SET emp_number='YOUR VALUE'"
答案 3 :(得分:1)
要获得最佳答案,您应该包括您正在使用的RDBMS。无论如何,我相信这是相当通用的:
您可以使用INFORMATION_SCHEMA
获取包含该列的表的列表:
select TABLE_SCHEMA, TABLE_NAME
from INFORMATION_SCHEMA.COLUMNS
where COLUMN_NAME = 'emp_number'
然后,使用cursor
遍历表列表,并为每个表动态创建和运行更新语句。