2014-09-22 57 views
-1

我有一张表,我已经成功地复制了很多行。 id列是自动增量并具有外键约束。我想要做的是删除没有活动约束的所有行。这可能吗?在没有constarint的情况下删除行

编辑

该查询给我了需要删除的记录的ID的列表,有编辑此之后删除的一个很好的方式?

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

当然这是可能的。你在哪里问题? – Paddy 2014-09-22 10:21:04

+0

随着查询本身!我不明白如何使用where子句扩展查询中的删除操作,以检查是否存在链接到密钥的数据 – dave 2014-09-22 10:23:03

+0

[删除所有没有外键约束的记录]可能的重复(http://stackoverflow.com/问题/ 2785271 /删除所有记录的,该具备的,没有外键约束) – bummi 2014-09-22 10:30:31

回答

0

因此,您已经拥有可以删除的行的WHL_LEVEL_IDs。典型的解决方案会是这样的

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,如果它使用这个确切的语法。

相关问题