DELETE из одной таблицы по условию из другой

ZN

Новичок
DELETE из одной таблицы по условию из другой

Есть таблица1 и таблица2, связанные таблица1.itemid=таблица2.id, в таблице2 есть поле sign, так вот нужно из первой таблице удалить все записи, для которых во второй таблице sign=1.
Я придумал сделать это с вложенным подзапросом, то есть
DELETE FROM таблица1 WHERE itemid IN (джойн двух таблиц с условием sign=1)
есть ли более оптимальный вариант?
 

zerkms

TDD infected
Команда форума
ZN
почитай про синтаксис DELETE - там можно делать джоины
 

vadim

Guest
Из официального манула MySQL (если речь о нём):
For the first multiple-table syntax, only matching rows from the tables listed before the FROM clause are deleted. For the second multiple-table syntax, only matching rows from the tables listed in the FROM clause (before the USING clause) are deleted. The effect is that you can delete rows from many tables at the same time and have additional tables that are used only for searching:

DELETE t1, t2 FROM t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;

Or:

DELETE FROM t1, t2 USING t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;

These statements use all three tables when searching for rows to delete, but delete matching rows only from tables t1 and t2.
 

zerkms

TDD infected
Команда форума
vadim
да, именно эти строки я и имел ввиду
 
Сверху