草庐IT

MySQL bulk drop table where table like?

coder 2023-06-10 原文

DROP TABLE (
SELECT table_name
FROM information_schema.`TABLES`
WHERE table_schema = 'myDatabase' AND table_name LIKE BINARY 'del%');

我知道这行不通!在 SQL 中,类似这样的东西的等价物是什么?我可以编写一个简单的 Python 脚本来执行此操作,但只是想知道我们是否可以直接使用 SQL 做一些事情。我正在使用 MySQL。谢谢!

最佳答案

您可以使用 prepared statements -

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;

它将生成并执行这样的语句 -

DROP TABLE myDatabase.del1, myDatabase.del2, myDatabase.del3;

关于MySQL bulk drop table where table like?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11053116/

有关MySQL bulk drop table where table like?的更多相关文章

随机推荐