MySQL 限制范围

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案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

【讨论】:

请don't provide a solution that is already covered by another answer。如果您同意另一个答案,那么当您有足够的reputation 时,您可以upvote it,这是 Stack Overflow 表示您同意的方式。另见How to Answer。

以上是关于MySQL 限制范围的主要内容,如果未能解决你的问题,请参考以下文章

想要将 MySQL 字段的值限制在特定范围内(十进制值)

Hive 分区字段限制

MySQL 中各种对象的大小长度限制

请问一下mysql是否限制了单个表的容量,能改吗

如何合并两个表(包括主键和范围限制)

mysql数据库字段的取值范围设置过大有没有啥影响