我遇到了从数据库获取前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条记录。
我希望我能够清楚地解释我的问题。
如果你能帮我解决这个问题,我将很高兴。
答案 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