Вы можете использовать not exists
для удаления записей из первой таблицы (я назвал ее a
), для которой нет другой записи в другой таблице (называемой b
) с теми же user_id
и flag
установите на 0
:
delete from a
where not exists (select 1 from b where b.user_id = a.user_id and b.flag = 0)
Обратите внимание, что это также удалит записи в a
, которые не имеют соответствующей записи в b
. Если вы хотите избежать этого, вам нужен еще один подзапрос:
delete from a
where
not exists (select 1 from b where b.user_id = a.user_id and b.flag = 0)
and exists (select 1 from b where b.user_id = a.user_id)