MySQL - 获取前n个记录并通过分页的特定列进行排序

时间:2013-05-18 21:27:26

标签: mysql pagination limit

我遇到了从数据库获取前n条记录并按特定列排序并对其进行分页的问题。

例如,我希望电影桌上的前100部电影按名称排序前100条记录,每页显示10条记录。

然而,这不起作用;

SELECT name FROM movies ORDER BY id DESC, name DESC, LIMIT 0,10

我在这里很困惑。为了分页,我必须以这种方式使用LIMIT;

LIMIT 0,10 = FIRST PAGE
LIMIT 10,20 = SECOND PAGE

等等。

为了获得第一个记录,我使用ORDER BY id DESC但是当我想将FROM Z列为A时,ORDER BY id DESC, name DESC不能解决问题。

换句话说,我想做的是从10.000中获取第一(最新)100条记录,并按名称(ASC或DESC)和/或按视图(ASC或DESC)订购这100条记录。

我希望我能够清楚地解释我的问题。

如果你能帮我解决这个问题,我将很高兴。

3 个答案:

答案 0 :(得分:1)

改变order by语句的顺序 (更新)

select   name 
from     ( select    * 
           from     movies 
           order by id desc 
           limit 100 ) 
order by name desc 
limit    0,10

它首先使用第一个,如果相等则查看下一个

答案 1 :(得分:0)

将您的选择包装在另一个选择中;

SELECT name FROM (SELECT * FROM movies ORDER BY id DESC LIMIT 0,100) ORDER BY name DESC LIMIT 0,10

编辑:更新限制。

答案 2 :(得分:0)

您可以尝试使用 从中选择名称 (通过id desc limit 0,100从电影订单中选择名称) 按名称排序限制0,10