sql2005 order by

lying21 2010-09-17 01:32:51
我现在想把一个表中得到的前十条数据
数据如下:
shopmessage_id class_id name
10 15 a
9 15 a
14 15 a
15 15 a
10 15 a
17 15 a
现在把这几条数据进行 shopmessage_id 降序排列 ???
表名:tb_shopmessage
sql: select top 6 *from tb_shopmessage order by shopmessage_id desc
这样的得到是先对表中的数据进行了倒序排列 再取出了十条
而我要的结果是:取出十条数据 在对这十条数据进行降序排列??
...全文
92 4 点赞 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lying21 2010-10-31
谢谢你们!
  • 打赏
  • 举报
回复
abuying 2010-09-19


select * from
(select shopmessage_id,class_id,name,Row_number() Over(order by shopmessage_id desc) as level ) as b
where b.level between 1 and 10
  • 打赏
  • 举报
回复
ws_hgo 2010-09-17
n-m條記錄
1.
select top m * into 临时表(或表变量) from tablename order by columnname -- 将top m笔插入
set rowcount n
select * from 表变量 order by columnname desc


2.
select top n * from
(select top m * from tablename order by columnname) a
order by columnname desc


3.
如果tablename里没有其他identity列,那么:
select identity(int) id0,* into #temp from tablename

取n到m条的语句为:
select * from #temp where id0 >=n and id0 <= m

如果你在执行select identity(int) id0,* into #temp from tablename这条语句的时候报错,那是因为你的DB中间的select into/bulkcopy属性没有打开要先执行:
exec sp_dboption 你的DB名字,'select into/bulkcopy',true


4.
如果表里有identity属性,那么简单:
select * from tablename where identitycol between n and m

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ws_hgo/archive/2008/12/17/3541083.aspx
  • 打赏
  • 举报
回复
sql_cctv 2010-09-17
select *
from (select top 10 * from tb order by shopmessage_id)t
order by shopmessage_id desc
  • 打赏
  • 举报
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-09-17 01:32
社区公告
暂无公告