У меня есть две таблицы с отношением многие-к-одному. Я могу выбрать элементы в «дочерней» таблице с критериями в родительской таблице, используя неявное соединение:
select * from child,parent where child.parentid=parent.id and parent.name like 'foobar%'
Существует ли лучший (более эффективный, более элегантный) способ удаления дочерних элементов, чем простой:
delete from child where child.parentid in (select id from parent where parent.name like 'foobar%')
Этот ответ подсказывает, что я мог бы сделать:
delete child from child,parent where child.parentid=parent.id and parent.name like 'foobar%'
Но на PostgreSql (через Белку SQL) я получаю синтаксическую ошибку. .. конечно, у меня длинные имена таблиц, поэтому фактический запрос больше похож на:
delete c from child c, parent p where c.parentid=p.id and p.name like 'foobar%'
Так это поддерживается PG, или есть другой способ?
Бонусные баллы: могу ли я удалить элементы из двух таблиц, используя:
delete from child,parent where child.parentid in (select id from parent where parent.name like 'foobar%')