MySQL删除表

MySQL删除表,mysql,sql-drop,Mysql,Sql Drop,我将使用什么样的MySQL语法删除多个具有相似模式的表?比如: 从'Database1'中删除表,如“SubTable*”否。但您可以从信息\u模式数据库中选择表名: select table_name from information_schema.tables where table_schema = 'Database1' and table_name like 'SubTable%' 然后迭代结果集中的表名并删除它们,因为drop table是由准备好的语句支持的,所以可以

我将使用什么样的MySQL语法删除多个具有相似模式的表?比如:


从'Database1'中删除表,如“SubTable*”

否。但您可以从
信息\u模式
数据库中选择表名:

select table_name
  from information_schema.tables
 where table_schema = 'Database1'
   and table_name like 'SubTable%'

然后迭代结果集中的表名并删除它们

,因为drop table是由准备好的语句支持的,所以可以通过这种方式完成-

SET @tables = NULL;
SELECT GROUP_CONCAT(table_schema, '.', table_name) INTO @tables FROM information_schema.tables 
  WHERE table_schema = 'Database1' AND table_name LIKE 'SubTable%';

SET @tables = CONCAT('DROP TABLE ', @tables);
PREPARE stmt1 FROM @tables;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
mysql>选择CONCAT(“DROP TABLE”,GROUP_CONCAT(TABLE_NAME))作为 stmt

来自信息\u schema.TABLES

其中TABLE_SCHEMA=“your_db_name”和TABLE_name,如“ur condition” 输入outfile'/tmp/a.txt'

mysql>source/tmp/a.txt

如上文所述,如果不首先增加组_concat的限制,此处给出的回复(Angelin和Devart)将不会在所有情况下都有效,如下所示:

SET group_concat_max_len = 1024 * 1024 * 10;

我该如何使用MySQL进行迭代?很遗憾,这被标记为正确答案,而给出的其他两个答案实际上都提供了完全按照要求进行操作的方法。@Warren Sergent-spakatak.com:不需要“类似”的操作。正如我在回答中所说,有一种东西可以从
信息\u模式
中获取信息并生成查询。你知道,有时候答案意味着你需要思考一下,而不仅仅是为了吃免费的鱼。谢谢@zerkms我遵循了你的思路,简单地循环了一下信息模式中列出的表名。工作得很有魅力