几条常见的数据库分页 SQL 语句
SQL Server
从数据库表中的第M条记录开始取N条记录,利用Top关键字:注意如果Select语句中既有top,又有order by,则是从排序好的结果集中选择:
SELECT *
from ( SELECT Top N *
from (SELECT Top (M + N - 1) * from 表名称 Order by 主键 desc) t1 ) t2
Order by 主键 asc
例如从表Sys_option(主键为sys_id)中从10条记录还是检索20条记录,语句如下:
SELECT *
from ( SELECT TOP 20 *
from (SELECT TOP 29 * from Sys_option order by sys_id desc) t1) t2
Order by sys_id asc
Oralce数据库
从数据库表中第M条记录开始检索N条记录
SELECT *
from (SELECT ROWNUM r,t1.* from 表名称 t1 where rownum < M + N) t2
where t2.r >= M
例如从表Sys_option(主键为sys_id)中从10条记录还是检索20条记录,语句如下:
SELECT *
from (SELECT ROWNUM R,t1.* from Sys_option where rownum < 30 ) t2
Where t2.R >= 10
MySQL数据库
My sql数据库最简单,是利用mysql的LIMIT函数,LIMIT [offset,] rows从数据库表中M条记录开始检索N条记录的语句为:
以下是引用片段:
SELECT * from 表名称 LIMIT M,N
例如从表Sys_option(主键为sys_id)中从10条记录还是检索20条记录,语句如下:
以下是引用片段:
select * from sys_option limit 10,20
DB2数据库
DB2分页查询
SELECT * from (Select 字段1,字段2,字段3,rownumber() over(ORDER BY 排序用的列名 ASC) AS rn from 表名) AS a1
WHERE a1.rn BETWEEN 10 AND 20
以上表示提取第10到20的纪录
&n
相关文档:
DATEDIFF(参数一,参数二,参数三) ---参数一:year month day; 参数二:比较的起始日期,默认1900-1-1;参数三:比较的日期。
eg:DATEDIFF(year,0,getdate())表示比较0(默认1900-1-1)到当前的日期想差几年
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) -- 取得本月的第一天
SELECT DATEADD(wk, D ......
1:replace 函数
第一个参数你的字符串,第二个参数你想替换的部分,第三个参数你要替换成什么
select replace('lihan','a','b')
&nb ......
例子:
if 1<>1
begin
if 5<0
begin
print('失败')
end
else begin
&nbs ......
1 TOP
这是一个大家经常问到的问题,例如在SQLSERVER中可以使用如下语句来取得记录集中的前十条记录:
SELECT TOP 10 * from [index] ORDER BY indexid DESC;
但是这条SQL语句在SQLite中是无法执行的,应该改为:
SELECT * from [index] ORDER BY indexid DESC limit 0,10;
其中limit 0,10表示从第0条记录开始,往后 ......
.清空日志
DUMP TRANSACTION 库名 WITH NO_LOG
2.截断事务日志:
BACKUP LOG 库名 WITH NO_LOG
3.收缩数据库文件(如果不压缩,数据库的文件不会减小
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接 ......