SQL-запрос, как удалить таблицу, которая не активна в table2 - PullRequest
0 голосов
/ 25 октября 2019

SQL-запрос, как удалить таблицу, которая неактивна в таблице 2

В таблице 2 есть столбцы server_name и active.

Я хочу выполнить запрос, если активный = 0, затем получитьимя_сервера и отбросить все таблицы.

server_name - это Yahoo для удаления таблиц вне таблицы 2.

Пример Table1 (для удаления):

tablename
google
yahoo

Пример Table2:

server_name,active
google 1
yahoo 0

Обычно я хочу выполнить запрос на удаление таблицы Yahoo, поскольку Yahoo не активен в таблице 2.

Поэтому мне нужно удалить имя_таблицы: yahoo

У меня 1000таблицы, которые я хочу удалить из таблицы 2.

Какой запрос мне нужно для этого выполнить?

1 Ответ

0 голосов
/ 25 октября 2019

Вам необходимо создать хранимую процедуру, в которой есть курсор, который будет циклически проходить по всем записям в таблице.

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

По сути, хранимая процедура будет перебирать вашу таблицу, проверяя, является ли эта записьactive, а затем подготовьте оператор для запуска команды DROP TABLE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...