【问题标题】:top 30 distinct records order by latest LastModifiedDatetime按最新 LastModifiedDatetime 排序的前 30 条不同记录
【发布时间】:2015-03-22 12:14:37
【问题描述】:

我执行了以下查询,包含 SearchText、SearchURL、LastModifiedDateTime、Country 列

 select Top 30 * from SearchHistory  order by LastModifiedDateTime desc

这里面有很多重复的记录。我需要按最新的 LastModifiedDatetime 排序的 distinct(SearchURL) 记录。

我试过这个查询:

 SELECT Top 30 *  FROM   (SELECT *,  Row_number()
                                             OVER(
                                             PARTITION BY SearchURL
                                             ORDER BY LastModifieddateTime desc) AS RN
                                             FROM   SearchHistory where searchtext is not null )A
                                        WHERE  RN = 1 

但我得到了完全不同的结果集(非常旧的记录在顶部)。

我需要按 LastModifiedDatetime desc 排序的 前 30 个不同(searchurl)记录顺序

【问题讨论】:

  • 然后改用ORDER BY LastModifieddateTime DESC
  • 您的查询看起来还不错,不知道您在期待什么
  • 我希望按 LastModifiedDatetime desc 排序的前 30 个不同(searchurl)记录,但我的查询在顶部返回一些旧记录,
  • 您将ROW_NUMBER() OVER() 中的ORDER BY 混淆了,它只说明了您如何订购行号,而ORDER BY 在查询末尾,它订购了您的整个SELECT过滤完成后
  • 如果你解决了你的问题,你应该发布你的解决方案作为未来读者的答案

标签: sql sql-server tsql


【解决方案1】:

这是一个使用分组的更简单的替代方法:

SELECT TOP 30 SearchURL, MAX(LastModifiedDateTime) AS LastModifiedDateTime
FROM SearchHistory
GROUP BY SearchURL
ORDER BY LastModifiedDateTime DESC

【讨论】:

    【解决方案2】:

    回答: 我唯一错过的是在 RN 之后添加 order by 子句。我的印象是,在 searchURL 之后 ORDER BY LastModifieddateTime desc 会处理它。

     SELECT Top 30 *  FROM   (SELECT *,  Row_number()
                                             OVER(
                                             PARTITION BY SearchURL
                                             ORDER BY LastModifieddateTime desc) AS RN
                                             FROM   SearchHistory where searchtext is not null )A
                                        WHERE  RN = 1 ORDER BY LastModifieddateTime desc
    

    【讨论】:

      猜你喜欢
      • 2021-03-09
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 2014-12-16
      • 1970-01-01
      相关资源
      最近更新 更多