@Sazanovdm

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

Нужно удалить в 2-х таблицах строчки с Id = 80, подскажите, что не так делаю?
DELETE FROM table_1 A LEFT JOIN table_2 B ON (A.Id= B.Id) WHERE Id= '80' AND A.Type= '0'
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
Immortal_pony
@Immortal_pony
DELETE 
    A,
    B
FROM 
    table_1 A
    LEFT JOIN table_2 B ON (A.Id= B.Id)
WHERE 
    A.Id=80
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
HemulGM
@HemulGM
Delphi Developer, сис. админ
DELETE FROM table_1 WHERE ...; DELETE FROM table_2 WHERE ...;
Ответ написан
@dimuska139
Backend developer
Повесьте внешний ключ со свойством ON DELETE ... CASCADE на нужный столбец. Тогда СУБД будет автоматически удалять связанные данные из других таблиц.
Ответ написан
idShura
@idShura
BEGIN;
	DELETE FROM table_1 WHERE ID = 80; 
	DELETE FROM table_2 WHERE ID = 80;
COMMIT;
Ответ написан
@Akina
Сетевой и системный админ, SQL-программист.
что не так делаю?

Полагаете, что запись с указанным ID существует.

Если в table_1 такой записи нет - никаких удалений не будет, даже если во второй таблице есть такие записи.

В общем случае для решения задачи одним запросом необходим FULL JOIN. Но увы, MySQL его не поддерживает. А потому в общем случае задача нерешаема.
Ответ написан
Ваш ответ на вопрос

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

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