SQL查询如何删除表2中处于非活动状态的表
SQL查询如何删除表2中处于非活动状态的表 表2包括列SQL查询如何删除表2中处于非活动状态的表,sql,mariadb,Sql,Mariadb,SQL查询如何删除表2中处于非活动状态的表 表2包括列server\u name和active 如果active=0,我想运行查询,然后获取服务器名称并删除所有表 server\u name用于从表2外部删除表 表1示例(用于跌落): 表2示例: server_name,active google 1 yahoo 0 我想运行一般查询来删除yahoo表,因为yahoo在表2中不活动 所以我需要删除表名:yahoo 我有1000张桌子要放在桌子2外面 我需要为此运行哪个查询?您需要创建一个存储过
server\u name
和active
如果active=0,我想运行查询,然后获取服务器名称并删除所有表
server\u name
用于从表2外部删除表
表1示例(用于跌落):
表2示例:
server_name,active
google 1
yahoo 0
我想运行一般查询来删除yahoo表,因为yahoo在表2中不活动
所以我需要删除表名: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
创建过程演示()
开始
声明tablename varchar(100);
声明activeflag tinyint;
声明stm varchar(1000);
声明当前光标用于选择服务器名称,从表2中处于活动状态
开放cur;
读循环:循环
将cur1提取到tablename、activeflag中
IF(activeflag<1)
设置stm=CONCAT('DROP TABLE',tablename);
从stm制备stmt;
执行stmt;
如果结束;
端环;
封闭电流;
结束
本质上,存储过程将遍历您的表,检查该记录是否处于活动状态,然后准备一条语句来运行DROP table命令。您使用的是哪种数据库服务器?您需要提供关于您的问题的更多详细信息。我正在使用mysql/phpmyadmin。(sql)。我的问题很简单,如何从active=0的表2中删除表1,2,3,4,5,然后选择服务器名称并删除具有该服务器名称的表。我遇到了以下错误:[Err]1064-您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解使用“cur”附近的正确语法;read_loop:loop FETCH cur1到server_name,activeflag IF(acti'在第9I行,虽然您使用的是mySQL?为什么实例上有MariaDB错误?我想我使用的是sql,但我看到的是MariaDB。再一次。我有这个servers.sql在这个表中是server_name(varchar50)和active(int)列。在servers.sql中有两条记录google->active=0和yahoo active=1。在数据库中有两个表,分别称为google.sql和yahoo.sql。我想从服务器上运行一个脚本检查。sql检查谁是active=0,然后删除google.sql表我现在手头上没有MariaDB,但我非常确定您需要构造一种存储的过程,它将遍历该表,在该表中存储表名以及该表是否处于活动状态的标志。然后将表名存储到变量中,然后准备SQL命令以删除存储在该变量中的表。
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