Как использовать столбец в определенной таблице в качестве имени таблицы, из которой мне нужно удалить, вставить или обновить свои данные

# #mysql #sql #google-bigquery

Вопрос:

Для предположим, что у меня есть данные, как показано ниже

    Id        Table Name 
    1          T1
    2          T3 
    3          T2
    4          T1
 

могу ли я написать один запрос для удаления идентификаторов 1 и 4 из таблицы T1 и 2 из таблицы T3 и 3 из таблицы T3?

Комментарии:

1. Короткий ответ: Нет, для каждого удаления обычно требуется отдельный запрос. Кроме того, ваш текущий дизайн может быть неоптимальным. Почему все эти записи не могут быть в одной таблице?

2. в основном я пытаюсь использовать оплоги базы данных mongo для ежедневного обновления ее дампа, который будет находиться в BigQuery, поэтому разработаны таблицы для удаления, обновления и вставки вышеуказанным способом из всех коллекций.

3. Здесь вам понадобится динамический SQL, то есть вам нужно будет написать код, который генерирует инструкции delete SQL.

4. будет ли это вашим вариантом? SELECT ... INTO @delete_query; PREPARE stmt FROM @delete_query; EXECUTE stmt

5. Поскольку ваше требование теперь относится к динамическому SQL для BigQuery, я бы предложил открыть новый поток stackoverflow для того же самого.

Ответ №1:

Как предложил @Tim, ваше требование об удалении из нескольких таблиц невозможно в одном запросе, скорее, вы можете использовать динамический SQL для создания каждой инструкции delete SQL и использовать команду execute для выполнения запроса.