选择具有给定值T-SQL的第一行

时间:2018-05-22 14:30:02

标签: sql sql-server

我正在尝试从复制int(名为user_id)的数据库中删除所有行,以便仅保留第一个匹配项。不确定为什么我的尝试不起作用,并想解释你如何解决问题甚至不仅仅是一个解决方案。

我的尝试(和示例数据)http://sqlfiddle.com/#!18/9f6fc/5

结束目标:

user_id, PAios_AccountId
123      a
223      b

1 个答案:

答案 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