Я пытаюсь delete
строк из нескольких таблиц одновременно в большом запросе, чтобы очистить мою БД для дальнейшего анализа.
Я попробовал это, как показано здесь: http://www.mysqltutorial.org/mysql-delete-join/
DELETE `test.TestLm.devc` T1, `test.TestLm.deva` T2
FROM T1
INNER JOIN T2 ON T1.id = T2.user_id
WHERE is_bot IS TRUE
Однако я получил:
Синтаксическая ошибка: неожиданно "," в [1:40]
Любая идея, как обойти это на Bigquery ?
ОБНОВЛЕНИЕ:
Вот моя полная проблема с 7 таблицами для удаления.Есть ли возможность сделать это в 1 запросе или быстрее?
## 1-2 minutes : ##
DELETE `test.TestLm.message_all` t1
WHERE relation_id IN
(SELECT a.relation_id FROM `test.TestLm.relation_big` a
INNER JOIN `test.TestLm.users_big` b ON a.initier_id = b.id
INNER JOIN `test.TestLm.users_big` c ON a.receiver_id = c.id
WHERE (b.is_bot IS TRUE OR c.is_bot IS TRUE));
## 4+ minutes -- WARNING : WAIT UNTIL THE PREVIOUS QUERY ON 'message_all' IS FINISHED BECAUSE OF THE ABOVE JOINTURE ##
## ##
DELETE `test.TestLm.relation_big`
WHERE initier_id IN (SELECT id FROM `test.TestLm.users_big` WHERE is_bot IS TRUE)
OR receiver_id IN (SELECT id FROM `test.TestLm.users_big` WHERE is_bot IS TRUE);
## quicker queries - no need to wait ##
DELETE `test.TestLm.moderation`
WHERE user_id IN (SELECT id FROM `test.TestLm.users_big` WHERE is_bot IS TRUE);
DELETE `test.TestLm.report`
WHERE reporter_id IN (SELECT id FROM `test.TestLm.users_big` WHERE is_bot IS TRUE)
OR culprit_id IN (SELECT id FROM `test.TestLm.users_big` WHERE is_bot IS TRUE);
DELETE `test.TestLm.purchase_agg`
WHERE user_id IN (SELECT id FROM `test.TestLm.users_big` WHERE is_bot IS TRUE);
DELETE `test.TestLm.leads`
WHERE user_id IN (SELECT id FROM `test.TestLm.users_big` WHERE is_bot IS TRUE);
DELETE `test.TestLm.device`
WHERE user_id IN (SELECT id FROM `test.TestLm.users_big` WHERE is_bot IS TRUE);
## WARNING : !!!! WAIT UNTIL ALL PREVIOUS QUERIES ARE DONE !!!!! ##
DELETE FROM `test.TestLm.users_big` WHERE
is_bot IS TRUE