这篇文章主要是分析下,四种数据库(SqlServer/Oracle/Mysql/Sybase)查询前N条数据,或者查询中间N条数据的方法。对四种数据库的语法进行一下简单的分析。属于初级教程,高手请自动跳过。以后也会写一些连贯性的渐渐深入的东西。例如,下一篇就会和这篇有关。会写些常用的分页SQL写法,里面就会使用到今天写的,查询前N条或者中间N条的方法。之后再深入到分页存储。接下来也会写一些,异构数据库的语法分析系列,针对很多朋友,同事,客户经常问到的一些问题做一个整理,一方面备忘,一方面给更多的朋友提供交流学习的机会。
进入正题,MSSQL查询前10条的方法为:
select
top
X
*
from
table_name
--
查询前X条记录,可以改成需要的数字。
select top n * from ( select top m * from table_name order by column_name ) a order by column_name desc -- 查询第N到M条记录。常用的分页也是这种方式。
例如常用的分页方式:
declare @page int
declare @row int
set @page = 2 -- 页数
set @row = 3 -- 每页展示行数
select top ( @row ) * from ( select top ( @row * @page ) * from table_name order by id ) a order by id desc -- 最基本的分页方式,改变@row和@page达到分页效果
select top n * from ( select top m * from table_name order by column_name ) a order by column_name desc -- 查询第N到M条记录。常用的分页也是这种方式。
例如常用的分页方式:
declare @page int
declare @row int
set @page = 2 -- 页数
set @row = 3 -- 每页展示行数
select top ( @row ) * from ( select top ( @row * @page ) * from table_name order by id ) a order by id desc -- 最基本的分页方式,改变@row和@page达到分页效果
MYSQL查询前10条的方法:
select
*
from
table_name limit
0
,
10
--
通常0是可以省略的,直接写成 limit 10。0代表从第0条记录后面开始,也就是从第一条开始
select * from table_name limit 1 , 10 -- 则为从第一条后面的记录开始展示,也就是说从第二条开始。
select * from table_name limit 1 , 10 -- 则为从第一条后面的记录开始展示,也就是说从第二条开始。
ORACLE查询前十条的方法:
select
*
from
table_name
where
rownum
<
X
--
X为前多少条记录
select * from ( select a. * ,a.rownum rn from ( select * from table_name) a where a.rownum < M) where rn > n -- 这句就是从n到m也的数据,分为三层结构
select * from ( select a. * ,a.rownum rn from ( select * from table_name) a where a.rownum < M) where rn > n -- 这句就是从n到m也的数据,分为三层结构