从两个相关的表中删除行

时间:2014-11-09 18:08:43

标签: sql delete-row

在table1和table2之间有一个1 N的关系。 "代码" table2的列是table1的外键。 我想删除table1中没有表2中任何行相关的所有行。我试试

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

但这会删除两个表中的所有行...

3 个答案:

答案 0 :(得分:1)

也许这就是你想要的?

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

在运行删除之前,您可能希望验证是否将使用选择查询删除正确的行:

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

答案 1 :(得分:1)

你可以试试这个:

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

答案 2 :(得分:0)

或者可能使用RIGHT OUTER JOIN

delete from table1 r 
   right join table2 a on a.code = r.code
      where r.code is null