我正在制作图片库。用户可以通过评级对此图库进行排序:
SELECT *
FROM images
WHERE album_id=8
ORDER BY rating DESC, id DESC
LIMIT 0, 10
这将生成图像列表,我很乐意向用户显示:
image_id | rating
--------------------
25 | 10
23 | 10
18 | 9
16 | 9 -- user will click here
15 | 9
89 | 8
67 | 8
60 | 8
5 | 8
101 | 3
之后,用户点击此图片:
image_id | rating
--------------------
16 | 9
现在,我需要编写一个 SQL查询,它将确定集合中下一个和上一个图像的内容以相应地显示链接,仅知道image_id
和那个set按rating DESC, id DESC
排序。
任务似乎微不足道,但我该怎么做?这个问题的常见方法是什么?
我尝试过这样的事情:
-- get next image
SELECT *
FROM images
WHERE
album_id=8
AND rating <= 9 -- rating of current image
AND image_id < 16 -- id of current image
ORDER BY rating DESC, id DESC
LIMIT 1
但是,如果下一条记录的评分不同,这对我不起作用。
有没有更优雅的方法来解决这个问题,因为用户可以选择排序方向和多个参数?
P.S。我正在使用Django ORM,但简单SQL中的答案很好。
答案 0 :(得分:0)