此查询获取重复的行。在删除重复项之前,我将使用此查询更新对重复项的引用。
SELECT TOP 350000 itmopt_pk, item_fk, option_fk,
ROW_NUMBER()OVER(PARTITION BY item_fk, option_fk ORDER BY item_fk ASC, option_fk ASC) AS RN
FROM item_options
WHERE RN > 1
GROUP BY itmopt_pk, item_fk, option_fk
ORDER BY RN DESC
该线路AND RN > 1
不起作用,并给了我Invalid column name 'RN'
。
尝试使用AND ROW_NUMBER()OVER(PARTITION BY item_fk, option_fk ORDER BY item_fk ASC, option_fk ASC) > 1
给了我Windowed functions can only appear in the SELECT or ORDER BY clauses
我正在使用 sqlsrv。
我怎样才能只返回行 where RN > 1
?
你不明白信息的哪一部分?.a 文件中不允许使用窗口函数where
。在相应的SELECT
. 使用子查询:
SELECT TOP 350000 itmopt_pk, item_fk, option_fk
FROM (SELECT itmopt_pk, item_fk, option_fk,
ROW_NUMBER() OVER (PARTITION BY item_fk, option_fk ORDER BY item_fk ASC, option_fk ASC) AS RN
FROM item_options
) io
WHERE RN > 1
GROUP BY itmopt_pk, item_fk, option_fk
ORDER BY RN DESC;
这个查询看起来很奇怪。我想知道是否有另一种方式来表达你想要的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句