优化的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 ......
触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行。Microsoft® SQL Server™ 允许为任何给定的 INSERT、UPDATE 或 DELETE 语句创建多个触发器。
1、INSERT触发器:可以定义一个无论何时用INSERT语句向表中插入数据时都会执行的触发器。
......
一、基础
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
--- 创建 备份数据的 device
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 开始 备份
BACKUP DATABASE pubs TO testBack
4、说 ......
1.导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> ......
在SQL Server2005中有FOR XML 用法,可以讲一个表作为一个字段。
我的设计想法主要是用在1对多的关系中表读取的问题。
表A 表B
在A中有一条记录而在B中有多条记录可以参照下面的写法:(我的项目中用到的,修改了字段主要是演示用)
select A.*,
(SELECT a, CAST(G_Univalence AS NVARCHAR(48)) AS G_Univa ......