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

    转自:http://blog.163.com/budong_weimin_zh/blog/static/12919852420115130484204/

    用惯了access mssql server的朋友,可能在用mysql查询前N条记录时,习惯的使用select top n 形式的语句,在这里说明一下,mysql没有此语法,mysql用limit来实现相关功能,而且功能更加强大,GOOD。以下是limit在mysql中的使用详解: 
    语法:
    SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset
    LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。
    如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。
    初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。
    mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 ,注意,10为偏移量 
    //为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
    mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.
    //如果只给定一个参数,它表示返回最大的记录行数目:
    mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行 //也就是说,LIMIT n 等价于 LIMIT 0,n。
    如果你想得到最后几条数据可以多加个 order by id desc

    mysql不支持select top n的语法,应该用这个替换:
    select * from tablename order by orderfield desc/asc limit position, counter;
    position 指示从哪里开始查询,如果是0则是从头开始,counter 表示查询的个数
    取前15条记录:
    select * from tablename order by orderfield desc/asc limit 0,15

  • 相关阅读:
    图书管理系统---基于form组件和modelform改造添加和编辑
    Keepalived和Heartbeat
    SCAN IP 解释
    Configure Active DataGuard and DG BROKER
    Oracle 11gR2
    我在管理工作中積累的九種最重要的領導力 (李開復)
    公募基金公司超融合基础架构与同城灾备建设实践
    Oracle 11g RAC for LINUX rhel 6.X silent install(静默安装)
    11gR2 静默安装RAC 集群和数据库软件
    Setting Up Oracle GoldenGate 12
  • 原文地址:https://www.cnblogs.com/damoblog/p/8301853.html
Copyright © 2011-2022 走看看