当前位置:  开发笔记 > 编程语言 > 正文

MySQL:有条件地选择下一行和上一行

如何解决《MySQL:有条件地选择下一行和上一行》经验,为你挑选了2个好方法。

http://thedailywtf.com/Articles/The-Hot-Room.aspx

你看到底部是如何链接到下一篇和之前的文章("Unprepared For Divide_By_Zero"和"完全不同的游戏")?我该怎么做,但选择下一篇和以前的非私人文章?这适用于选择下一篇文章:

SELECT * FROM articles WHERE id > ? AND private IS NULL

但我找不到选择上一篇文章的方法.

什么是正确/有效的方法,最好是在一个查询中?



1> michal krali..:

或者延伸杰里米的答案......
在一个问题中

(SELECT * FROM articles WHERE id > ? 
 AND private IS NULL 
 ORDER BY id ASC LIMIT 1) 
UNION 
(SELECT * FROM articles WHERE id < ? 
 AND private IS NULL 
 ORDER BY id DESC LIMIT 1)


当你在选择的第一个/最后一个记录时,这个表现很奇怪.它只返回一条记录,但我无法找到解决方法.

2> Jeremy Ruten..:

我是这样做的:

-- next
SELECT * FROM articles WHERE id > ? AND private IS NULL ORDER BY id ASC LIMIT 1

-- previous
SELECT * FROM articles WHERE id < ? AND private IS NULL ORDER BY id DESC LIMIT 1

我不确定如何在一个查询中执行此操作.我唯一能想到的可能是在一个查询中同时获取您正在显示的文章和下一篇文章,但这可能会让您感到困惑.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有