加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL – 当有重复时选择最新的记录

发布时间:2020-12-12 08:50:19 所属栏目:MsSql教程 来源:网络整理
导读:我正在写一个查询,并在 this thread中使用了这个解决方案,但它有一些工作,但我仍然有点麻烦. 我想选择一大堆唯一的记录,但有一些记录发生两次.我想只能选择具有最新日期的记录.这是我的查询到目前为止 SELECT tb1.id,tb1.type,tb1.dateFROM Table tb1 WHERE t
我正在写一个查询,并在 this thread中使用了这个解决方案,但它有一些工作,但我仍然有点麻烦.

我想选择一大堆唯一的记录,但有一些记录发生两次.我想只能选择具有最新日期的记录.这是我的查询到目前为止

SELECT tb1.id,tb1.type,tb1.date

FROM Table tb1  

WHERE tb1.type = 'A' OR 'B'
AND tb1.date = (SELECT TOP 1 tb2.date
               FROM Table tb2  
               WHERE tb2.date = tb1.date
                ORDER BY tb2.date DESC)

只要它检索到具有重复记录的记录的最新记录,但这些记录没有重复的记录根本不显示.

感谢任何帮助,如果我错过了超级明显的东西,我很抱歉;我是SQL游戏的新手.

解决方法

有几种方法可以做到,一种方法是使用这样的 ROW_NUMBER:
SELECT id,type,date
FROM 
(
    SELECT tb1.id,tb1.Date,ROW_NUMBER() OVER (PARTITION BY tb1.id ORDER BY tb1.Date DESC) AS RowNo
    FROM Table tb1
    WHERE tb1.type IN ('A','B')
) x
WHERE x.RowNo = 1

这将返回具有最新Date的每个不同id值的行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读