【问题标题】:MySQL limit rangeMySQL 限制范围
【发布时间】:2011-08-11 16:02:31
【问题描述】:
SELECT name FROM mydb ORDER BY score DESC LIMIT 10;

上面的查询将返回前 10 个排名。

如何修改LIMIT,或者是否有其他语法可以查询第10到第20位?

【问题讨论】:

    标签: mysql sql sql-limit


    【解决方案1】:

    Limit 还有一个偏移量参数

    SELECT name FROM mydb ORDER BY score DESC LIMIT 10,10
    

    【讨论】:

      【解决方案2】:

      你应该使用:

      SELECT name FROM mydb ORDER BY score DESC LIMIT 10,10;
      

      http://dev.mysql.com/doc/refman/5.5/en/select.html

      两个参数 10,10 是 (Offset, Limit),因此这将检索第 11-20 行。
      9,11 需要获得第 10 - 20 名。

      【讨论】:

        【解决方案3】:
        SET @rank = 0;
        SELECT rank, name, score
        FROM (
            SELECT @rank := @rank +1 AS rank, name, score
            FROM mydb
            ORDER BY score DESC 
            LIMIT 100 
        ) X
        WHERE rank >= 10;
        

        【讨论】:

          【解决方案4】:

          使用offset 澄清查询。

          SELECT name FROM mydb ORDER BY score DESC LIMIT 10 OFFSET 10
          

          【讨论】:

          • 当你必须在代码中构造查询时,OFFSET 绝对是一个更好的主意。
          【解决方案5】:

          您可以使用偏移量

          SELECT name FROM mydb ORDER BY score DESC LIMIT 10 OFFSET 10

          这里,offset 表示接下来 10 个数据将从何处显示。

          你也可以在下面使用:

          SELECT name FROM mydb ORDER BY score DESC LIMIT 10, 10

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-07
          • 2021-10-22
          • 2011-04-23
          相关资源
          最近更新 更多