我正在尝试更新数据库中大多数表中存在的列(在本例中为日期)。遗憾的是,我的数据库已经创建了 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'
您可以复制此查询的输出,将其粘贴到查询编辑器中,然后运行它。
Update:
正如 @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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)