zoukankan      html  css  js  c++  java
  • MySQL中如何实现select top n ----Limit

    用惯了access mssql server的朋友,可能在用mysql查询前N条记录时,习惯的使用select top n 形式的语句,在这里说明一下,mysql没有此语法,mysql用limit来实现相关功能,而且功能更加强大,GOOD。以下是limit在mysql中的使用详解: 

    语法:

    1 SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset

    LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。
    如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。
    初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。

    1 --举例:
    2 
    3 select * from table limit 5; --返回前5行
    4 
    5 select * from table limit 0,5; --同上,返回前5行
    6 
    7 select * from table limit 5,10; --返回6-15行

    如何优化limit

    当一个查询语句偏移量offset很大的时候,如select * from table limit 10000,10 , 最好不要直接使用limit,而是先获取到offset的id后,再直接使用limit size来获取数据。效果会好很多。

    如:

    select * From customers Where customer_id >=(
    select customer_id From customers Order By customer_id limit 10000,1
    ) limit 10;

    MS SqlServer TOP子句

    语法:

    SELECT TOP number|percent column_name(s) FROM table_name;

    举例:

    1. 选取表中前2条记录

    select top 2 * from table;

    2. 选取表中50%的记录

    select top 50 persent from table;

    3. 从数据库中检索第10—20条记录

    复制代码
    SELECT TOP 10 *
    FROM TestTable
    WHERE (ID NOT IN
    (SELECT TOP 20 id
    FROM TestTable
    ORDER BY id))
    ORDER BY ID;
    复制代码

    Oracle分页

    语法:

    SELECT column_name(s) FROM table_name WHERE ROWNUM <= number

    举例:

    1. 选取前5条记录

    SELECT * FROM Persons WHERE ROWNUM <= 5

    分页:

    复制代码
    --从数据库表中第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
    复制代码
  • 相关阅读:
    POJ3094 UVALive3594 HDU2734 ZOJ2812 Quicksum【进制】
    UVALive5583 UVA562 Dividing coins
    POJ1979 HDU1312 Red and Black【DFS】
    POJ1979 HDU1312 Red and Black【DFS】
    POJ2386 Lake Counting【DFS】
    POJ2386 Lake Counting【DFS】
    HDU4394 Digital Square
    HDU4394 Digital Square
    UVA213 UVALive5152 Message Decoding
    UVA213 UVALive5152 Message Decoding
  • 原文地址:https://www.cnblogs.com/fnlingnzb-learner/p/6009992.html
Copyright © 2011-2022 走看看