我正在尝试从复制int(名为user_id)的数据库中删除所有行,以便仅保留第一个匹配项。不确定为什么我的尝试不起作用,并想解释你如何解决问题甚至不仅仅是一个解决方案。
我的尝试(和示例数据)http://sqlfiddle.com/#!18/9f6fc/5
结束目标:
user_id, PAios_AccountId
123 a
223 b
答案 0 :(得分:3)
最简单的方法是使用ROW_NUMBER
:
WITH cte AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY PAios_AccountId) AS rn
FROM [User]
)
DELETE FROM cte
WHERE rn <> 1;
<强> DBFiddle Demo 强>