删除没有约束的行



我有一个表,意外地复制了很多行。id列是自动递增的,并且具有外键约束。我想做的是删除所有没有活动约束的行。这可能吗?

编辑

这个查询给了我一个需要删除的记录的IDS列表,有没有一种很好的方法可以编辑它来删除?

SELECT WHL_LEVEL_ID
FROM [RMIS].[dbo].[WHL_LEVEL_DETAIL]
except
select WHL_LEVEL_ID
from [RMIS].[dbo].[WHL_SKU_LOCATION]

所以您已经有了可以删除的行的WHL_LEVEL_ID。典型的解决方案是类似

delete from [RMIS].[dbo].[WHL_LEVEL_DETAIL]
where WHL_LEVEL_ID in (
    SELECT WHL_LEVEL_ID
    FROM [RMIS].[dbo].[WHL_LEVEL_DETAIL]
    except
    select WHL_LEVEL_ID
    from [RMIS].[dbo].[WHL_SKU_LOCATION]
)

尽管我不能100%确定SQLserver是否支持where .. in (select,以及它是否使用了这种确切的语法。

最新更新