【问题标题】:select first row that has a given value T-SQL [duplicate]选择具有给定值 T-SQL 的第一行 [重复]
【发布时间】:2018-05-22 14:30:01
【问题描述】:

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

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

最终目标:

user_id, PAios_AccountId
123      a
223      b

【问题讨论】:

  • 您的无效,因为您按两列分组并且数据中没有重复项。但要真正发挥作用,您需要先定义。是否按 PAios_AccountId 排序?
  • 您通常(总是?)不想按要聚合的值进行分组,因为这会使行变得不同(如果它们都是唯一的,则您没有任何计数 > 1) .
  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用

标签: sql sql-server


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-07-06
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多