+-
mysql – 如何遍历数据库上的所有表以更新列
我正在尝试更新数据库上大多数表中存在的列(在本例中为日期).遗憾的是,我的数据库已经创建了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 – 如何遍历数据库上的所有表以更新列 - 乐贴网