我需要通过循环创建上一个/下一个功能。我目前的解决方案,如果我选择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
并显示照片
答案 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`
希望它能满足您的需求