同时更新多个表

时间:2012-10-09 12:45:26

标签: mysql sql

所以我在SQL中有许多表,内容有一个名为“hashtag_id”的键,其中包含一个数字(在本例中为1-5)。我想快速进入并将ID为“1”的所有项目更改为“5”。

有没有办法自动执行此操作?

3 个答案:

答案 0 :(得分:2)

update table set hashtag_id = 5
where hashtag_id = 1;

如果你有多个表,你可以在phpmyadmin(或任何mysql管理工具)中做类似的事情

这将查询information_schema.columns表(描述所有表和列),并为名为hashtag_id的每个列编写更新查询。

SELECT CONCAT('UPDATE ', 
               table_name, 
               ' SET ',
               column_name,
               ' = 5 WHERE ',
               column_name,
               ' = 1;' 
             )
FROM information_schema.columns
WHERE column_name = 'hashtag_id';
--maybe add  AND table_schema = <your_schema>

复制并执行结果

这可能也可以在使用动态sql的存储过程中完成(在MySQL中不常用,所以没有例子)。

答案 1 :(得分:1)

对于每个表,您需要运行以下查询:

UPDATE yourtable
SET hashtag_id = 5
WHERE hashtag_id = 1 

这会找到hashtag_id为1的所有行,并将其设置为5.


要获取所有表的名称,可以运行以下查询:

SELECT table_name
FROM information_schema.columns
WHERE table_schema = 'your_schema'
AND column_name = 'hashtag_id'

答案 2 :(得分:0)

UPDATE MyTable
SET hashtag_id=5
WHERE hashtag_id=1;