Target1
@Target1

Как удалить данные из нескольких таблиц одним запросом?

У меня несколько сотен таблиц и нужно с них удалить определенные данные. Таблицы имеют имя table_1,table_2,table_3 и тд.
Вот я нахожу нужные таблицы ну и сам запрос что удалить.
SELECT table_name
       FROM INFORMATION_SCHEMA.TABLES
       WHERE table_name LIKE '%table_%'


DELETE
FROM `table_xx`
WHERE `id` = 0

Как это все теперь объедить и запрос сделать типа такого (он не работает)
DELETE
FROM (SELECT table_name
       FROM INFORMATION_SCHEMA.TABLES
       WHERE table_name LIKE '%table_%')
WHERE id = 0
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
Target1
@Target1 Автор вопроса
SET @del := (SELECT CONCAT('DELETE FROM ', GROUP_CONCAT(TABLE_NAME SEPARATOR ' WHERE id=0; DELETE FROM ') , ';' )
  AS statement FROM information_schema.TABLES WHERE TABLE_NAME LIKE '%table_%' );
PREPARE stmt FROM @del;
EXECUTE stmt;
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Terran37
Программист
Возможно, что вам подойдет вариант "Execute Immediate". Почитайте про него.
Я посмотрю более подробно вечером и оставлю вам комментарий.
Ответ написан
@402d
начинал с бейсика на УКНЦ в 1988
Для этой задачи давно придуманы тригеры.
https://dev.mysql.com/doc/refman/8.0/en/trigger-sy...
Вам нужен before delete
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы