好的我有大约68,000个表,我需要删除一个特定的短语。当我运行命令时:
SHOW TABLES其中table_name类似于'%词组&#39 ;;
我得到了我需要的所有结果,但是我尝试运行以下代码,它只消除了68,000中的6个:
SET @temp_statement = NULL;
SELECT
GROUP_CONCAT(table_schema, '.`', table_name, '`') INTO @temp_statement
FROM
(
SELECT
table_schema, table_name
FROM
information_schema.tables
WHERE
table_schema = 'db_name_goes_here' AND table_name LIKE 'table_base_name_here_%'
LIMIT 10 -- a limit to avoid exceeding group_concat_max_len
) JUST_A_TEMP_NAME;
-- up to this point, @temp_statement holds something like this:
-- mydb.`table1`,mydb.`table2`,...,mydb.`tableN`
SET @temp_statement = CONCAT('DROP TABLE ', @temp_statement);
SELECT @temp_statement; -- let's see the SQL statement before executing it
PREPARE stmt1 FROM @temp_statement;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
SET @temp_statement = NULL; -- clean up
答案 0 :(得分:0)
您可以分两步完成此操作:
首先执行:
statement
--------------------------------------------------------
DROP myschema.mytable1;
DROP myschema.mytable2;
输出如下:
int array[5] = { 1 };
然后获取输出,并将其作为一批SQL语句再次执行。
对我来说,这是最务实的方法。