在table1和table2之间有一个1 N的关系。 "代码" table2的列是table1的外键。 我想删除table1中没有表2中任何行相关的所有行。我试试
delete * from table1 r
inner join table2 a
where (r.code!=a.code)
但这会删除两个表中的所有行...
答案 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