• 5093阅读
  • 0回复

【信息】问题:如何用SQL文将表B按字段X升序,字段Y降序排序后,取出第n到第m个记录?[supfrie] [复制链接]

上一主题 下一主题
离线XChinux
 

只看楼主 正序阅读 楼主  发表于: 2005-07-30
操作系统:Windows2000(Server & Professional)
编程工具:SQL Server 7.0
问题:如何用SQL文将表B按字段X升序,字段Y降序排序后,取出第n到第m个记录?

回答:

select top m-n col1, col2...
from table b
where col1 not in
(select top n from table b order by col1 (asc, desc)
col2 (asc, desc) ...)
order by col1 (asc, desc), col2 ...

For example:

need records from 15 to 20 in pubs..authors table
order by au_id desc, au_lname asc:

select top 5 au_id, au_lname, au_fname
from authors
where au_id not in
(select top 15 au_id from authors order by au_id desc, au_lname asc)
order by au_id desc, au_lname asc

Guest的意见:
1.NOT IN的效率很低
2.用存储过程实现,主要是利用滚动光标
(declare scroll cursor...)

阿甘的意见:
select * from (select top m-n * from (select top 100 percent * from (select top m * from (select top 100 percent * from B order by X,Y desc) a1) a2 order by Y,X desc) a3) a4 order by X ,Y desc
[ 此贴被XChinux在2005-10-14 00:38重新编辑 ]
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个