УДАЛИТЬ строки из нескольких соединенных таблиц Bigquery

Я пытаюсь delete строки из нескольких таблиц сразу в bigquery очистить мою БД для дальнейшего анализа.

Я попробовал это, как нашел здесь: 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

Однако я получил:

Syntax error: Unexpected "," at [1:40]

Любая идея, как обойти это на Большой запрос?

ОБНОВИТЬ :

Вот моя полная проблема с 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

Я не думаю, что BigQuery позволяет удалять данные сразу из нескольких таблиц. Он, конечно, не поддерживает синтаксис MySQL, поэтому вам следует ознакомиться с многочисленной документацией BigQuery в Интернете.

Gordon Linoff 13.02.2019 13:51

BigQuery не поддерживает один оператор DELETE для нескольких таблиц. А пока, если вы сможете прояснить причину такого "пожелания" - мы найдем простой обходной путь :о)

Mikhail Berlyant 13.02.2019 22:32

Спасибо, парни ! В моей реальной проблеме у меня есть 7 таблиц, которые можно объединить; но чтобы не делать 7 запросов (каждый из которых с болезненным множественным соединением), я искал запрос, который сразу очищал все мои 7 таблиц. Я только что обновил свой пост, чтобы рассказать о реальной проблеме :)

leonardmaguin 14.02.2019 14:30
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
3
3 174
1

Ответы 1

в стандартном режиме sql ниже будет работать

DELETE test.TestLm.devc i
WHERE i.id IN (select id from test.TestLm.deva where id is not null)

Большое спасибо, но это удалит только строки в таблице T1. Я пытаюсь удалить строки из T1 и T2 одновременно. Чтобы дать некоторый контекст, в моей реальной проблеме у меня есть 7 таблиц, которые все могут быть объединены; но, чтобы не делать 7 запросов (каждый из которых с болезненным косяком), я искал запрос, который сбрасывал бы все мои 7 таблиц сразу.

leonardmaguin 14.02.2019 14:17

Другие вопросы по теме