我想从数据库中的表中删除重复的记录。我正在使用下面的查询来创建一个临时表,以便识别重复项,然后将其删除。但是,我不断收到“无法从指定的表中删除”错误消息。为什么此查询不起作用?如何编辑它才能起作用?谢谢!
DELETE [Carrier Name Crosswalk].*
FROM [Carrier Name Crosswalk]
INNER JOIN [Carrier Name Crosswalk] AS [Carrier Name Crosswalk_1]
ON [Carrier Name Crosswalk].[DYCR TPA_CARRIER] = [Carrier Name Crosswalk_1].[DYCR TPA_CARRIER]
WHERE ((([Carrier Name Crosswalk_1].ID)>[Carrier Name Crosswalk].[ID]));
答案 0 :(得分:1)
您可以在下面尝试-
DELETE *
FROM [Carrier Name Crosswalk] AS C1
WHERE C1.[ID]<>
(SELECT MAX(C2.[ID])
FROM [Carrier Name Crosswalk] AS C2
WHERE C2.[DYCR TPA_CARRIER] = C1.[DYCR TPA_CARRIER]);
答案 1 :(得分:0)
这里是一种选择:
DELETE *
FROM [Carrier Name Crosswalk] t1
WHERE EXISTS (SELECT 1 FROM [Carrier Name Crosswalk] t2
WHERE t1.[DYCR TPA_CARRIER] = t2.[DYCR TPA_CARRIER] AND
t2.ID < t1.ID) = TRUE;
这里的逻辑是检查EXISTS
子句中是否对于每个DYCR TPA_CARRIER
,我们都可以在同一表中找到另一个匹配的载波,其ID
的值小于 而不是当前记录的ID
被考虑删除。如果我们可以找到一条较低的ID
记录,那么我们将删除当前记录,该记录必须是重复记录。