SQL server , Oracle , MySql 查询数据条目总结

3大数据库在处理查询表中前几条或者其中几条数据时候的处理方式:

SQL Server: 

     SQL Server 数据库中的Top关键字可实现查询数据库表中的前几条数据,但是需要注意的是,Top关键字只能在SQL Server数据库中可以使用
     例:select top 3 * from why;

Mysql:

     在MySQL数据库中就要使用具有同样功能的LIMIT
             例:select  * from product_info where product_prevention = '玉米' limit 3;
             等价于:select  * from product_info where product_prevention = '玉米' limit 0,3;
     LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。
     如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。 初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。
             mysql> SELECT * FROM table LIMIT 5,10; //检索记录行6-15
     为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
             mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.

Oracel:

     Oracle使用rownum的关键字来实现这种查询
     select * from area where rownum <= 8

     对于固定条目范围查询,SQL Server和oracle不像mysql那么方便,它必须使用子查询或者是集合操作来实现。推荐以下2种方式:
         A: SELECT * FROM
                      (
                         SELECT
                                   ROW_NUMBER() OVER( ORDER BY 排序的字段 ) AS 序号
                                  ,表.*
                         FROM
                                   表
                      ) tmp
              WHERE
                      tmp.序号 between 2 and 8;

         B: select * from area where rownum <= 8 minus select * from area where rownum < 2;
         使用集合减运算符minus,该操作返回在第一个select中出现而不在第二个select中出现的记录。
 

你可能感兴趣的:(oracle)