1

我从数据库中获取前 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 条记录。

我希望我足够清楚来解释我的问题。

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

4

3 回答 3

1

order by改变你的陈述顺序(更新)

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

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

于 2013-05-18T21:36:34.337 回答
0

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

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

编辑:更新的限制。

于 2013-05-18T21:40:22.073 回答
0

您可以尝试使用 select name from (select name from movies order by id desc limit 0,100) order by name desc limit 0,10

于 2013-05-18T21:43:53.047 回答