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 限制范围的主要内容,如果未能解决你的问题,请参考以下文章