MySQL:如何使用单个查询删除多个表?

Ang*_*dar 11 mysql sql multiple-tables sql-delete

我想轻松删除多个表而不在drop查询中实际列出表名,要删除的表有前缀'wp_'

Joh*_*n P 15

我使用了一个非常类似于Angelin的查询.如果您有多个表,则必须增加最大长度group_concat.否则,查询将在group_concat返回的截断字符串上进行barf .

这是我10美分:

-- Increase memory to avoid truncating string, adjust according to your needs
SET group_concat_max_len = 1024 * 1024 * 10;
-- Generate drop command and assign to variable
SELECT CONCAT('DROP TABLE ',GROUP_CONCAT(CONCAT(table_schema,'.',table_name)),';') INTO @dropcmd FROM information_schema.tables WHERE table_schema='databasename' AND table_name LIKE 'my_table%';
-- Drop tables
PREPARE str FROM @dropcmd; EXECUTE str; DEALLOCATE PREPARE str;
Run Code Online (Sandbox Code Playgroud)


Ang*_*dar 7

只需分享其中一个解决方案:

mysql> SELECT CONCAT("DROP TABLE",
GROUP_CONCAT(TABLE_NAME))AS stmt

来自information_schema.TABLES

WHERE TABLE_SCHEMA ="your_db_name"AND TABLE_NAME将"ur condition"改为outfile'/tmp/a.txt';

mysql> source /tmp/a.txt;