Удалить строки с помощью объединения и условия WHERE, использующего другую таблицу - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть 3 таблицы в базе данных mysql, я хочу удалить из 2 из них через JOIN, исходя из условия, что в 3-й таблице не осталось ни одного идентификатора, относящегося к другой записи.

Пока у меня есть,

DELETE t1, t2
FROM t1
INNER JOIN t2 ON t1.qs_id = t2.qst_qs_id

Что я не могу понять, так это как проверить записи t3, чтобы сработало предложение where. Сценарий, который я пытаюсь сделать, выглядит следующим образом:

delete from t1 и t2, для любых qs_ids, у которых нет строк, оставшихся в таблице t3, t3 имеет столбец с именем qsa_qs_id, поэтому, если нет строк, соответствующих идентификаторам из JOIN, я могу выполнить удаление, но я не могу понять, как поместить это в мой WHERE.

PSEUDO будет,

УДАЛИТЬ из t1, t2, все строки, которые имеют совпадающие столбцы qs_id, НО делают это только в том случае, если в t3 нет строк с оставшимися этими qs_id.

1 Ответ

0 голосов
/ 06 ноября 2018
DELETE t1, t2 
FROM t1
INNER JOIN t2 ON t1.qs_id = t2.qst_qs_id 
WHERE t1.qs_id NOT IN (SELECT t3.qs_id FROM t3);
...