表有几千条数据,按写入表先后顺序自然排列了,现在每次只想取出最后5条记录后再按时间从新到旧排列,顺序是先查去5条记录,在只对着5个记录排序查询出来给DATASET,能实现吗?要是这样牛人说是代价大:select top 5 * from table order by time desc(我估计是先对整个表排序后再取5条数据)
解决方案 »
- 打印表格 ~~~~~急~~~~~
- 表单提交到另外一个网页时,如何取得前一页面的HttpInputFile
- 关于母板页与内容页的问题
- ConnectionString 属性尚未初始化问题(急)
- 请教关于sql存储过程传null参数的问题
- 【求助】搜索调用代码编写
- datagrid的第一个数据删不了
- 如何将取出的值赋给一个字符串,以便在整个网页中调用呢?
- mvc返回一个Ienumerable<student> studnets的集合,用view(studnet),还是json(studnet)操作?
- 请问各位高手如何设置用户的菜单权限,能够提供一段完整的代码吗?
- 弹出窗口样式问题
- 如何写Wap客户端程序
select top 5 * from table order by time desc
这句你认为他先排序再取5条还是先去5条再排序,差别大的了,*只是我说明个问题,实际上我只会写需要的几个字段
select * from (select top 5 * from yourtable order by id desc) t order by [time] asc
这样就比较高效了。
那么你可以order by pkid desc 这样比order by time desc效率好的多!
当然是先排序了!
如果PK是guid呢?不要想当然好不好
你将表先以id为准降序排列取出前5条记录就是你要的最后插入的5条记录
再以时间为准将查询出的记录降序排列出来即可
但5楼也出了写写的失误,他以时间的升序排列了
应为
select * from (select top 5 * from table order by id desc) table order by [time] desc
select top 5 * from table order by time desc
这点数据几乎不用考虑效率问题