Команду DELETE в MySQL можно использовать для удаления из нескольких таблиц сразу, используя один из вариантов синтаксиса:
1) Поддерживается начиная с версии MySQL 4.0.0. Строки удаляются только из таблиц, перечисленных перед FROM
:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
tbl_name[.*] [, tbl_name[.*]] ...
FROM table_references
[WHERE where_condition]
2) Поддерживается начиная с версии MySQL 4.0.2. Строки удаляются только из таблиц, перечисленных после FROM
и перед USING
:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
FROM tbl_name[.*] [, tbl_name[.*]] ...
USING table_references
[WHERE where_condition]
Примеры использования первого и второго варианта:
DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3
WHERE t1.id=t2.id AND t2.id=t3.id;
DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3
WHERE t1.id=t2.id AND t2.id=t3.id;
В обоих примерах строки удаляются только из таблиц t1 и t2, но поиск ведется также с учетом данных из t3.