当前位置: 首页 > 面试题库 >

从表中的重复记录中获取最新ID

杭永安
2023-03-14
问题内容

所以我有两个表,一个是RAWtable,另一个是MAINtable,如果存在多个记录(比较相同的名称,代码),我必须获取最新的groupID。例如,我在RAWtable上有这个:

id  groupid     name        code
1   G09161405   Name1       Code1
2   G09161406   Name1       Code1

这两个记录应视为一个,并且应仅返回此值:

id  groupid     name        code
2   G09161406   Name1       Code1

该行是应插入主表中的唯一行。提供返回的最新GroupID(groupid是日期和时间的组合)

我已经尝试过了,但是没有用:

SELECT MAST.ID, MAST.code, MAST.name FROM RAWtable AS MAST INNER JOIN 
(SELECT code, name, grouid,id FROM RAWtable AS DUPT GROUP BY code, name, groupid,id HAVING COUNT(*) >= 2) DUPT
 ON  DUPT.code =MAST.code and DUPT.name =MAST.name where dupt.groupid >mast.groupid

我怎样才能做到这一点?多谢。


问题答案:
select R.id,
       R.groupid,
       R.name,
       R.code
from (select id, 
             groupid, 
             name, 
             code,
             row_number() over(partition by name, code order by groupid desc) as rn
      from RawTable       
     ) as R
where R.rn = 1

或者,如果您没有row_number()

select R1.id,
       R1.groupid,
       R1.name,
       R1.code
from RawTable as R1
  inner join (  
              select name, code, max(groupid) as groupid
              from RawTable
              group by name, code
             ) as R2
    on R1.name = R2.name and
       R1.code = R2.code and
       R1.groupid = R2.groupid


 类似资料:
  • 我想从Amazon Kinesis流中获取最新记录。我打算从中提取时间戳,并将其与消费者应用程序检查指向的最后一条记录的时间戳进行比较,以检查消费者是否落后。 我不能使用最新的shard迭代器类型。这是因为LATEST指向最近的记录之后,因此它不能用于访问最近的记录。 有没有简单的方法可以获得最新记录? 我正在考虑的一种方法是获取消费者最近处理的记录序列号的碎片迭代器,使用该碎片迭代器发出GetR

  • 我有以下数据: 获取密钥列表的最佳方法是什么(好像它是一个dict而不是一个数组)?目前我正在做: 但这感觉有点老土

  • 问题内容: 在下表中,如何仅根据登录列获取的 最新记录 ,而不是所有3条记录? 问题答案: 使用按ID分组的汇总。这将列出每个最新的。 要获取完整的单个记录,请对仅返回每个ID 的子查询执行。

  • 问题内容: 我需要从下面给出的表中获取每个重复记录集的第一行。我需要在视图中使用此查询 请不要使用临时表,因为我已经通过添加标识列和最小函数以及分组依据来完成了。我需要没有临时表或表变量的解决方案 这只是示例数据。原始表中有1000条记录,我只需要前1000条的结果,因此不能使用 不同的 我正在使用SQL Server 2005 谢谢。 问题答案: 答案具体取决于您所说的“前1000个不同”记录的

  • 问题内容: 这个问题已经在这里有了答案 : SQL只选择列上具有最大值的行[重复] (27个答案) 去年关闭。 假设我有一个带有列的表: 我只想从每个用户那里获取最新消息,就像您在深入实际线程之前在FaceBook收件箱中看到的那样。 此查询似乎使我接近所需的结果: 但是查询给我的是来自每个用户的最旧消息,而不是最新消息。 我不知道这一点。 问题答案: 您应该找出每个组(子查询)中的最后一个值,然

  • 问题内容: 我有三个表: 我需要获取每次测量的最新事件(过去的事件)及其相关的eventvalues数据。 我当前的查询很丑陋: 而且只允许我从表格中选择一列(我需要更多) 有什么方法可以使用联接来完成此操作吗? 编辑 :即使它们在第一个事件之前,我也需要从测量表中选择所有条目(即,为连接选择空数据) 问题答案: 您可以使用CROSS APPLY。