首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除MySQL中的动态托管表

问删除MySQL中的动态托管表
EN

Stack Overflow用户
提问于 2010-11-18 06:34:54
回答 1查看 1.4K关注 0票数 1

我有一个MySQL数据库,其中包含许多表,其中一些表是由软件动态创建的。动态表具有一致的命名方案:

代码语言:javascript
复制
dynamic_1  
dynamic_2  
...

但是,我不一定知道这些表中有多少张。

我希望能够删除所有这些动态表而不删除整个数据库。我希望能够完全在SQL中做到这一点。(存储过程可以。)这有可能吗?

快速增编。

海姆和亚历山大的解决方案非常有效,但有一个特例我们都错过了。如果有-没有动态表呢?在这种情况下,@v将为NULL,当我们试图执行时会得到一个错误。我添加了第二个变量来处理这种情况:

代码语言:javascript
复制
SET @v = (SELECT CONCAT('drop table ', GROUP_CONCAT(a.table_name)) FROM information_schema.tables a where a.table_schema = DATABASE() AND a.table_name like 'dynamic_%');
SET @y = (SELECT IF (@V IS NOT NULL, @V, 'select 1'));
PREPARE s FROM @y;
EXECUTE s; 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-18 06:43:15

您可以运行此查询并获取运行所需的所有sql查询;

代码语言:javascript
复制
select concat( 'drop table ', a.table_name, ';' )
from information_schema.tables a 
where a.table_name like 'dynamic_%';

您可以将它插入到文件中,如

代码语言:javascript
复制
INTO OUTFILE '/tmp/delete.sql';

根据alexandre的评论更新

代码语言:javascript
复制
SET @v = ( select concat( 'drop table ', group_concat(a.table_name))
    from information_schema.tables a 
    where a.table_name like 'dynamic_%'
    AND a.table_schema = DATABASE()
;);
 PREPARE s FROM @v; 
EXECUTE s;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4212229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档