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
这样的得到是先对表中的数据进行了倒序排列 再取出了十条
而我要的结果是:取出十条数据 在对这十条数据进行降序排列??
...全文
108 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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