SQL查询前10条记录(SqlServer/mysql/oracle/sybase)[语法分析]

 

这篇文章主要是分析下,四种数据库(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达到分页效果

 

 

MYSQL查询前10条的方法:

select
 
*
 
from
 table_name limit 
0
,
10
  

通常0是可以省略的,直接写成  limit 10。0代表从第0条记录后面开始,也就是从第一条开始


select
 
*
 
from
 table_name limit 
1
,
10
  

则为从第一条后面的记录开始展示,也就是说从第二条开始。

 

 ORACLE查询前十条的方法:

select   *   from  table_name  where  rownum < X为前多少条记录
select   *   from  ( select  a. * ,a.rownum rn  from  ( select   *   from  table_name) a  where  a.rownum < M)  where  rn > 这句就是从n到m也的数据,分为三层结构

 

 

    原文作者:【DBA】小七
    原文地址: https://www.cnblogs.com/dba_xiaoqi/archive/2011/02/15/1878796.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞