我创建了以下 MySQL (v5.7.14) 存储过程。它成功删除了我的数据库中所有前缀为“members_list_”的表。但是,我只想删除前缀为“members_list_”并且超过 1 小时的表。
BEGIN
SET @tables = NULL;
SELECT GROUP_CONCAT('`', table_schema, '`.`', table_name, '`') INTO @tables
FROM information_schema.tables
WHERE table_schema = 'my_database_name'
AND table_name LIKE 'members_list_%'; -- AND CREATE_TIME < (NOW() - INTERVAL 1 HOUR);
SET @tables = CONCAT('DROP TABLE ', @tables);
PREPARE stmt1 FROM @tables;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END
你会看到我已经在 WHERE 子句中删除了一个命令。它使用 CREATE_TIME 功能,但是当我“使”那段代码(通过删除“;--”部分)时,我收到以下错误消息:
过程执行失败 1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“NULL”附近使用正确的语法
甚至可以批量删除超过 1 小时的前缀表吗?