我想删除表中batchId(运行编号)早于前两行的所有行。我可以在 SQL 数据库中使用以下查询来执行此操作:
WITH CTE AS(
SELECT
*,
DENSE_RANK() OVER(ORDER BY BATCHID DESC) AS RN
FROM MyTable
)
DELETE FROM CTE WHERE RN>2
但是在 SQL 数据仓库中不允许这样做 this 。在这里寻找替代方案。
最佳答案
您可以尝试使用 JOIN
delete d from MyTable d
join
(
SELECT
*,
RN = ROW_NUMBER() OVER(PARTITION BY BATCH_ID ORDER BY BATCH_ID DESC)
FROM MyTable
)A on d.batch_id=A.batch_id where RN >2
关于sql - CTE 与 DELETE - SQL 数据仓库的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54624737/