DELETE FROM rpt62_attribution_value
WHERE elo_id NOT IN(SELECT elo_id
FROM (SELECT elo_id,
elo_value,
attr_value,
ilo_flag,
ROW_NUMBER() OVER (PARTITION BY elo_value,
attr_value ORDER BY
elo_id)
Rank
FROM rpt62_attribution_value) tmp
WHERE rank = 1
ORDER BY 1);
答案 0 :(得分:3)
要在SQL Server中将其设置为有效查询,只需删除ORDER BY 1
,因为在子查询和派生表中不允许这样做,除非指定TOP
并且不提供任何功能。
然而,看起来你正在删除重复项,所以这样的事情可能会更好
;WITH T AS
(
SELECT ROW_NUMBER() OVER (PARTITION BY elo_value, attr_value
ORDER BY elo_id) [Rank]
FROM rpt62_attribution_value
)
DELETE FROM T WHERE [Rank] > 1