sql查询最近几条不重合记录

xiaowei_001 2014-10-09 05:31:02
字段 编号 订单号 其他
1 111 。。
2 111 。。
3 111 。。
4 222 。。
5 222 。。
6 222 。。
7 333 。。
8 333 。。
9 444 。。
10 444 。。
11 555 。。
12 555 。。
13 666 。。
14 666 。。
15 777 。。
16 777 。。
17 888 。。
18 888 。。

如需要查询出最近五条记录,同时不需要重合的
字段 编号 订单号 其他
7 333 。。
9 444 。。
11 555 。。
13 666 。。
15 777 。。
17 888 。。
...全文
183 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
小麻雀NG 2014-11-05
  • 打赏
  • 举报
回复
亲测可用 with cte as ( select *,ROW_NUMBER()OVER(PARTITION BY [订单号] ORDER BY [编号]) as ID from tabname ) select top 5 [编号],[订单号],[其它] from cte where id = 1 order by [订单号] desc
ghost281536992 2014-10-09
  • 打赏
  • 举报
回复
with B as ( select ID,ordernumber,ROW_NUMBER() over (partition by ordernumber order by ID) as RN from A ) select top 5 ID,ordernumber from B where RN = 1 order by ordernumber desc
reenjie 2014-10-09
  • 打赏
  • 举报
回复
2樓的方法是正確的,另寫一個方法

select a.* from tablename a ,
(select top 5 订单号,min(编号) as ID from tablename group by 订单号 order by min(编号) desc) as b
where a.订单号=b.订单号 and a.编号=b.ID
昵称被占用了 2014-10-09
  • 打赏
  • 举报
回复
with cte as ( select *,ROW_NUMBER()OVER(PARTITION BY [订单号] ORDER BY [编号]) as ID from tabname ) select top 5 [编号],[订单号],[其它] from cte where id = 1 order by [订单号] desc
还在加载中灬 2014-10-09
  • 打赏
  • 举报
回复
select top 5 [编号],[订单号],[其它] from 
(
	SELECT ROW_NUMBER()OVER(PARTITION BY [订单号] ORDER BY [编号])RN,[编号],[订单号],[其它] FROM  表
)T
WHERE
	T.RN=1
ORDER BY
	T.[订单号]
你参考一下,看是不是这样子

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧