【发布时间】: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