达到最后一个值后,“环绕”到第一个值

时间:2013-10-08 00:55:54

标签: mysql

很抱歉,如果标题令人困惑。

假设我有一个episode_id为0到20的视频播放列表。

目前播放的剧集是episode_id 4.

我想检索一个“更多视频”列表以提示用户继续观看,以及下一集即将观看的节目,如播放列表。所以这个列表会说“Up Next:Episode 5”,然后是剧集6 - 20,,但理想情况下也会是剧集0,1,2和3。所以我们会再次回到开头的剧集

是否有一个简单的MySQL功能,我不知道可以处理这样的事情?

编辑:我应该补充一点,有时episode_id不是很好而有序。给定节目的episode_id可以是12,14,17,19,31和37,因为episode_id是该表的主键。

1 个答案:

答案 0 :(得分:3)

一种方法是利用布尔排序,并执行以下操作:

SELECT * FROM episodes
WHERE ....
ORDER BY episode_id > 4 DESC, episode_id ASC

这依赖于episode id > 4 DESC在虚假值之前放置真值,然后在这两个组中按episode_id ASC排序。