DROP TABLE (
SELECT table_name
FROM information_schema.`TABLES`
WHERE table_schema = 'myDatabase' AND table_name LIKE BINARY 'del%');
Run Code Online (Sandbox Code Playgroud)
我知道这不起作用!SQL中这样的东西有什么用呢?我可以用一个简单的Python脚本来做这个,但只是想知道我们是否可以直接用SQL做一些事情.我正在使用MySQL.谢谢!
Dev*_*art 47
你可以使用准备好的陈述 -
SET @tables = NULL;
SELECT GROUP_CONCAT('`', table_schema, '`.`', table_name,'`') INTO @tables FROM information_schema.tables
WHERE table_schema = 'myDatabase' AND table_name LIKE BINARY 'del%';
SET @tables = CONCAT('DROP TABLE ', @tables);
PREPARE stmt1 FROM @tables;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
Run Code Online (Sandbox Code Playgroud)
它将生成并执行这样的语句 -
DROP TABLE myDatabase.del1, myDatabase.del2, myDatabase.del3;
Run Code Online (Sandbox Code Playgroud)
Ron*_*ein 14
@ Devart答案的一个小改进:
SET @tables = NULL;
SELECT GROUP_CONCAT(table_schema, '.`', table_name, '`') INTO @tables FROM
(select * from
information_schema.tables
WHERE table_schema = 'myDatabase' AND table_name LIKE 'del%'
LIMIT 10) TT;
SET @tables = CONCAT('DROP TABLE ', @tables);
select @tables;
PREPARE stmt1 FROM @tables;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
Run Code Online (Sandbox Code Playgroud)
应该重复执行此脚本,直到控制台的输出为止 NULL
变化是:
LIMIT以避免我评论的截断问题select @tables;)来控制何时停止执行脚本Raf*_*ver 11
如果你只需要快速删除一堆表(不是纯SQL,那么不直接回答这个问题)一行shell命令可以做到:
echo "show tables like 'fsm%'" | mysql | tail +2 | while read t; do echo "drop table \`$t\`;"; done | mysql
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47740 次 |
| 最近记录: |