MySQL:如何从数据库中选择下一行或上一行?

时间:2017-01-24 10:02:33

标签: php mysql database

我有一个名为" posts"的表格,并在该表格中包含" post_id" (与其他列的c一长)。

如何从表中选择下一行(或上一行)," post_id"?

让我们说出我现在的" post_id"现在我需要选择满足某些条件的下一行,所以我需要放入一些where子句。

我觉得我很难解释这个。我正在寻找这样的事情:

SELECT (next row) FROM posts WHERE post_draft=0 && post_approved=1

有人可以帮我吗?

3 个答案:

答案 0 :(得分:1)

关系数据库系统没有“下一行”或“前一行”的概念。那是因为在这样的数据库中没有条目的自然顺序。所以术语“下一个”和“前一个”并没有真正定义。

但是,您可以实现一个可以提供所需内容的查询:

SELECT * 
  FROM posts 
  WHERE post_id>15 
    AND post_draft=0 
    AND post_approved=1
  ORDER BY post_id ASC
  LIMIT 1;

因此,如果您拥有当前 post_id,则可以根据结果集的给定顺序轻松选择“下一个”条目。对于“之前”的条目,显然也是可能的。

答案 1 :(得分:0)

我会用这样的东西。

$next_post_query = "SELECT * FROM `posts` WHERE `post_draft`=0 AND `post_approved`=1 AND `post_id` > {$current_post_id} order by `post_id` asc limit 1";
$prev_post_query = "SELECT * FROM `posts` WHERE `post_draft`=0 AND `post_approved`=1 AND `post_id` < {$current_post_id} order by `post_id` desc limit 1";

答案 2 :(得分:-1)

假设post_id列是自动递增的,您可以尝试

select * from posts where post_id in (select post_id+1 from posts where post_draft=0 and post_approved=1)