SQL查询前10条记录(SqlServer/mysql/oracle/sybase)[语法分析] (转)
2011-09-17 00:05
537 查看
这篇文章主要是分析下,四种数据库(SqlServer/Oracle/Mysql/Sybase)查询前N条数据,或者查询中间N条数据的方法。对四种数据库的语法进行一下简单的分析。属于初级教程,高手请自动跳过。以后也会写一些连贯性的渐渐深入的东西。例如,下一篇就会和这篇有关。会写些常用的分页SQL写法,里面就会使用到今天写的,查询前N条或者中间N条的方法。之后再深入到分页存储。接下来也会写一些,异构数据库的语法分析系列,针对很多朋友,同事,客户经常问到的一些问题做一个整理,一方面备忘,一方面给更多的朋友提供交流学习的机会。
进入正题,MSSQL查询前10条的方法为:
Sql代码
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达到分页效果
MYSQL查询前10条的方法(limit参数的第一个参数n(如下面的0或1)表示前n条记录是不在选择范围内,相当于hibernate的setFirstResult的参数加一;第二个参数表示要选择的记录条数,相当于hibernate的setMaxResult的参数):
sql代码
select * from table_name limit 0,10 --通常0是可以省略的,直接写成 limit 10。0代表从第0条记录后面开始,也就是从第一条开始
select * from table_name limit 1,10 --则为从第一条后面的记录开始展示,也就是说从第二条开始。
MySQL查询前5条方法(假设一个表为users表,这里作为子查询时要加入别名不然会出错,还有一点要注意的是order by在limit前面,不然还没出结果前就说要前几条,怎么搞嘛,所以limit要放最后。):
sql代码
select * from (select * from users order by id limit 0 , 10) partOfUsers order by id desc limit 0 , 5;
ORACLE查询前十条的方法
sql代码
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 rownum co,id ,name from test1 )where co>m and co<n;--也可以查到n到m间的数据
如果想再取数据之间,加上个排序可以如下写:
select * from (select rownum co,id ,name from test1 order by id)where co>m and co<n;
载自:/article/5848206.html
进入正题,MSSQL查询前10条的方法为:
Sql代码
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达到分页效果
MYSQL查询前10条的方法(limit参数的第一个参数n(如下面的0或1)表示前n条记录是不在选择范围内,相当于hibernate的setFirstResult的参数加一;第二个参数表示要选择的记录条数,相当于hibernate的setMaxResult的参数):
sql代码
select * from table_name limit 0,10 --通常0是可以省略的,直接写成 limit 10。0代表从第0条记录后面开始,也就是从第一条开始
select * from table_name limit 1,10 --则为从第一条后面的记录开始展示,也就是说从第二条开始。
MySQL查询前5条方法(假设一个表为users表,这里作为子查询时要加入别名不然会出错,还有一点要注意的是order by在limit前面,不然还没出结果前就说要前几条,怎么搞嘛,所以limit要放最后。):
sql代码
select * from (select * from users order by id limit 0 , 10) partOfUsers order by id desc limit 0 , 5;
ORACLE查询前十条的方法
sql代码
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 rownum co,id ,name from test1 )where co>m and co<n;--也可以查到n到m间的数据
如果想再取数据之间,加上个排序可以如下写:
select * from (select rownum co,id ,name from test1 order by id)where co>m and co<n;
载自:/article/5848206.html
相关文章推荐
- SQL查询前10条记录(SqlServer/mysql/oracle/sybase)[语法分析]
- SQL查询前10条记录(SqlServer/mysql/oracle/sybase)[语法分析] (转)
- SQL查询前10条记录(SqlServer/mysql/oracle)[语法分析]
- SQL查询前10条记录(SqlServer/mysql/oracle)[语法分析] (转)
- SQL查询前10条记录(SqlServer/mysql/oracle)[语法分析]
- SQL查询前10条记录(SqlServer/mysql/oracle)[语法分析] (转)
- SQL查询前10条记录(SqlServer/mysql/oracle)语法分析
- 在Oracle、MySQL、MS SQL Server中查询指定数目的记录
- 不同数据库中查询前几条记录的用法(SQL Server/MYSQL /Oracle/Postgresql)
- 四种数据库(SqlServer/Oracle/Mysql/Sybase)查询前N条数据
- Oracle/MySql/SQL Sqlserver分页查询
- 不同数据库中查询前几条记录的用法(SQL Server/Oracle/Postgresql)
- 数据库比较 (DB2 Oracle MySQL SyBase SQLServer)
- MySQL、Oracle、MS SQLserver限制查询所返回的行数
- Oracle/Sqlserver/MySQL三种数据库选取第m至第n行记录(zt)
- C_连接Access、SQL_Server、Oracle、MySQL、DB2和SyBase六种不同数据库的程序源码和需要注意的点
- 数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
- 数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
- 五大主流数据库比较 (DB2 Oracle MySQL SyBase SQLServer) 转
- MySQL、SQL Server、Oracle 3种数据库查询表中前N行记录的SQL语句