您好,我有以下 SQL 查询,它为我提供了 Scheme_Id,它同时存在于 ProjectSchemes 和 Schemes 表中。我想删除 Schemes 表中没有 ProjectSchemes 表记录的所有记录。我怎样才能这样做呢?请帮忙。我正在使用 MSSQL
select scheme_id from Schemes where Scheme_Id
in(select s.Scheme_Id from Projects p
inner join ProjectSchemes ps on ps.Project_Id=p.Project_Id
inner join Schemes s on s.Scheme_Id=ps.Scheme_Id)
我正在尝试执行以下操作,但它不起作用。不工作意味着没有记录受到影响,但当我检查我的Schemes表时,有太多记录,以至于在ProjectSchemes表中找不到它们的scheme_id
delete from Schemes where Scheme_Id
not in(select s.Scheme_Id from Projects p
inner join ProjectSchemes ps on ps.Project_Id=p.Project_Id
inner join Schemes s on s.Scheme_Id=ps.Scheme_Id)
最佳答案
DELETE FROM schemes
WHERE scheme_id NOT IN (
SELECT DISTINCT scheme_id
FROM projectschemes
WHERE scheme_id IS NOT NULL
)
或者您也可以使用
DELETE
FROM schemes
WHERE NOT EXISTS (
SELECT 1
FROM projectschemes
WHERE projectschemes.scheme_id = schemes.ID
)
关于sql - 如何删除不在其中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14953624/