MySQL - 带循环的下一个/上一个ID

时间:2013-06-13 11:46:44

标签: mysql database max min

我需要通过循环创建上一个/下一个功能。我目前的解决方案,如果我选择MAX(ID),则为NULL

如何最有效地获取MIN(ID)而不是NULL(反之亦然)。当然,如果我的结果是IF,我可以使用NULL或只创建第二个查询,但我想知道是否有更好的解决方案。

我的表有三列

前:

ID     foto    like

3        A      0
4        B      0
5        C      0
10       D      0

如果我选择ID 4,则下一个是5,prev是3 //这个解决方案我有

对于ID 3,接下来是4,以前是10 //这就是我想要的

对于上一个/下一个,我使用此查询

(
    SELECT MIN(`ID`) AS id 
    FROM fotos 
    WHERE `ID` > '$this->id'
    ORDER BY `like` DESC
)
UNION
(
    SELECT MAX(`ID`) AS id 
    FROM fotos 
    WHERE `ID` < '$this->id'                                            
    ORDER BY `like` DESC
)
实际上已选择

$this->id并显示照片

1 个答案:

答案 0 :(得分:1)

您可以这样做的当前foto的下一个和上一个ID

SELECT COALESCE((SELECT id FROM `foto` WHERE id<'$this->id' ORDER BY DESC id LIMIT 1),
       (SELECT  MAX(id) FROM `foto`))  AS `prev`,
       COALESCE((SELECT id FROM `foto` WHERE id>'$this->id' ORDER BY id LIMIT 1 ),
       (SELECT MIN(id) FROM `foto`)) AS `next`

希望它能满足您的需求