首页 > 解决方案 > 选择具有给定值的第一行 T-SQL

问题描述

我试图从数据库中删除所有重复 int(名为 user_id)的行,以便只保留第一次出现。不知道为什么我的尝试没有奏效,并且想要解释您如何解决问题,而不是解决方案。

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

最终目标:

user_id, PAios_AccountId
123      a
223      b

标签: sqlsql-server

解决方案


最简单的方法是使用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 演示


推荐阅读