gpt4 book ai didi

mysql批量删除表,其中table_name如 '%phrase'

转载 作者:行者123 更新时间:2023-11-29 21:53:02 25 4
gpt4 key购买 nike

好的,我有大约 68,000 个表需要用特定短语删除。当我运行命令时:

显示表,其中 table_name like '%phrase';

我得到了我需要的所有结果,但我尝试运行以下代码,但它只删除了 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

最佳答案

您可以分两步完成此操作:

首先执行:

SELECT CONCAT('DROP ', table_schema, '.', table_name, ';') statement
FROM information_schema.tables
WHERE table_schema = 'db_name_goes_here'
AND table_name LIKE 'table_base_name_here_%';

输出将如下所示:

statement
--------------------------------------------------------
DROP myschema.mytable1;
DROP myschema.mytable2;

然后获取输出,并将其作为一批 SQL 语句再次执行。

在我看来,这是解决这个问题的最务实的方法。

关于mysql批量删除表,其中table_name如 '%phrase',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33443303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com