选择具有给定值T-SQL的第一行
我正试图从数据库中删除所有与名为user_id的int重复的行,以便只保留第一次出现的行。我不知道为什么我的尝试不起作用,我想解释一下你是如何解决问题的,而不仅仅是一个解决方案 我的尝试和示例数据 最终目标:选择具有给定值T-SQL的第一行,sql,sql-server,Sql,Sql Server,我正试图从数据库中删除所有与名为user_id的int重复的行,以便只保留第一次出现的行。我不知道为什么我的尝试不起作用,我想解释一下你是如何解决问题的,而不仅仅是一个解决方案 我的尝试和示例数据 最终目标: user_id, PAios_AccountId 123 a 223 b 最简单的方法是使用行号: 最简单的方法是使用行号: 您的不起作用,因为您按两列分组,并且数据中没有重复项。但要让它真正起作用,你首先需要定义。它是按PAios_AccountId排序的吗?你通常
user_id, PAios_AccountId
123 a
223 b
最简单的方法是使用行号:
最简单的方法是使用行号:
您的不起作用,因为您按两列分组,并且数据中没有重复项。但要让它真正起作用,你首先需要定义。它是按PAios_AccountId排序的吗?你通常总是这样吗?不希望按正在聚合的值分组,因为这将使行不同,并且如果它们都是唯一的,则没有任何计数>1。问题寻求调试帮助为什么此代码不起作用?必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处您的问题不起作用,因为您按两列分组,并且数据中没有重复项。但要让它真正起作用,你首先需要定义。它是按PAios_AccountId排序的吗?你通常总是这样吗?不希望按正在聚合的值分组,因为这将使行不同,并且如果它们都是唯一的,则没有任何计数>1。问题寻求调试帮助为什么此代码不起作用?必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处
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;