+-

我正在尝试更新数据库上大多数表中存在的列(在本例中为日期).遗憾的是,我的数据库已经创建了100多个表,并且充满了信息.有没有办法循环它们只是使用:
UPDATE SET date = '2016-04-20' WHERE name = 'Example'
在循环?
最佳答案
一个无痛的选择是创建一个查询,该查询生成要在所有表上运行的UPDATE语句:
SELECT CONCAT('UPDATE ', a.table_name, ' SET date = "2016-04-20" WHERE name = "Example";')
FROM information_schema.tables a
WHERE a.table_schema = 'YourDBNameHere'
您可以复制此查询的输出,将其粘贴到查询编辑器中,然后运行它.
更新:
正如@PaulSpiegel所指出的,如果使用HeidiSQL之类的编辑器,上述解决方案可能会很不方便,因为它需要手动复制结果集中的每个记录.使用GROUP_CONCAT()使用技巧会给出一个包含每个所需UPDATE查询的字符串:
SELECT GROUP_CONCAT(t.query SEPARATOR '; ')
FROM
(
SELECT CONCAT('UPDATE ', a.table_name,
' SET date = "2016-04-20" WHERE name = "Example";') AS query,
'1' AS id
FROM information_schema.tables a
WHERE a.table_schema = 'YourDBNameHere'
) t
GROUP BY t.id
点击查看更多相关文章
转载注明原文:mysql – 如何遍历数据库上的所有表以更新列 - 乐贴网