2014-11-09 3 views
1

Между таблицей 1 и таблицей 2 существует отношение 1 N. Столбец «code» таблицы2 является внешним ключом таблицы1. Я хочу удалить все строки в таблице1, у которых нет строки, связанной с таблицей2. СтараюсьУдалить строки из двух таблиц, связанных

delete * from table1 r 
    inner join table2 a 
     where (r.code!=a.code) 

, но это удалить все строки в двух таблицах ...

ответ

1

Может быть, это то, что вы хотите?

delete from table1 
where code not in (
    select code from table2 
) 

перед запуском удаления вы можете убедиться, что правильные строки будут удалены с помощью запроса на выборку:

select * from table1 
where code not in (
    select code from table2 
) 
1

Вы можете попробовать это:

delete from table1 r 
where not exists (select 1 from table2 a where r.code = a.code); 
+0

@jpw Спасибо, что я скопировал заявление с вопроса и не заметил, что – Multisync

0

Или, возможно, с использованием RIGHT OUTER JOIN

delete from table1 r 
    right join table2 a on a.code = r.code 
     where r.code is null 
Смежные вопросы