优化的ms sql server分页sql语句
优化的ms sql server分页sql语句
发布时间: 2009-8-15 00:00 | 发布作者: hjh | | 查看: 3次
特点:一次查询,数据库Databnse只返回一页的数据。而否则取出所有的数据。
说明:
pagesize: 每页呈现记录数
cureentpage:当前页数
select * from ( select TOP pagesize * from ( SELECT TOP pagesize*cureentpage * from user_table ORDER BY id ASC ) as aSysTable ORDER BY id DESC ) as bSysTable ORDER BY id ASC
例子说明:
假如数据库Databnse表如下:
user_table:
id:主键,自增
username:字符
password:字符
假设有80条记录,每页呈现10条记录,id 从1到80
目前按照id升序排列取出第三页的数据因该为:所取得记录的id 因该为 21到30。
这时该语句因该为:
select * from ( select TOP 10 * from ( SELECT TOP 30 * from user_table ORDER BY id ASC ) as aSysTable ORDER BY id DESC ) as bSysTable ORDER BY id ASC
思想如下:
先按照id从小到大升序取出30条记录(3*10),也就:id 在 1-30 之间的记录 (SELECT TOP 30 * from user_table ORDER BY id ASC)
然后按照ID降序排列这30条记录,得到记录为id 在:从30到 1
然后在这一部份30条记录中取出前10条记录:取得的记录为:id 在30-21之间。这就咱们需求的数据,但这时是按照降序排列的,不符合要求。
最后在重新排序得到最终咱们需求的数据。id在21-30之间。
期望对大部份人有所帮助。
如有疑难问题,期望和大部份人一块沟通。
email:yanek@126.com
相关文档:
数据字典dict总是属于Oracle用户sys的。
1、用户:
select username from dba_users;
改口令
alter user spgroup identified by spgtest;
2、表空间:
select * from dba_data_files;
select * from dba_tablespaces;//表空间
select tablespace_name,sum(bytes), sum(b ......
Dim rs As ADODB.Recordset
Dim sqlstr As String
'查询
sqlstr = "select * from 表名 where 字段名 = '" & 查询的内容 & "'"
rs = VScn.Execute("" & SqlSt ......
一﹕
触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完
整性约`束。
二﹕ SQL
Server为每个触发器都创建了两个专用表 ......
SQL Server2005读取注册表
DECLARE @result varchar(255)
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\OperationControlSystem\ClientID','Prefix',@result OUT ---注意必须有OUT否则@result为空
SELECT @result
假如在执行过程中出现错误,可能是未找到存储过程_master.dbo.xp_regread
原因:做安全 ......
SQL循环语句
declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end
---------------
while 条件
begin
执行操作
set @i=@i+1
end
WHILE
设置重复执行 SQL 语句或语句块的条件。只要指定的条件为真,就重复执行语句。可以使用 BREAK 和 CONTI ......