SQL查询如何删除表2中未激活的表
表2包括列server_name
和active
。
如果active=0,我想运行query,然后获取server_name并删除所有表。
server_name
是在表2之外放置表的yahoo。
表1示例(用于跌落(:
tablename
google
yahoo
表2示例:
server_name,active
google 1
yahoo 0
我一般想运行查询来删除yahoo表,因为yahoo在表2中不活跃。
所以我需要删除table_name:yahoo
我有1000张表,我想从表2放到外面。
我需要为此运行哪个查询?
您需要创建一个存储过程,该过程具有一个可以循环遍历表中所有记录的游标。
CREATE PROCEDURE demo()
BEGIN
DECLARE tablename varchar(100);
DECLARE activeflag tinyint;
DECLARE stm varchar(1000);
DECLARE cur CURSOR FOR SELECT server_name, active FROM table2
OPEN cur;
read_loop: LOOP
FETCH cur1 INTO tablename, activeflag
IF (activeflag < 1)
SET stm = CONCAT('DROP TABLE ', tablename);
PREPARE stmt FROM stm;
EXECUTE stmt;
END IF;
END LOOP;
CLOSE cur;
END
从本质上讲,存储过程将遍历表,检查该记录是否处于活动状态,然后准备一条语句来运行DROP table命令。