Php MySQL:如何从数据库中选择下一行或上一行?
我有一个名为posts的表,在该表中有一个post_id为long的列和其他列ofc 如何按post_id从表中选择下一行或上一行 假设我目前的职位id是15。现在我需要选择下一行,在那里满足某些条件,所以我需要放入一些where子句 我不善于解释我的感受。我在找这样的东西:Php MySQL:如何从数据库中选择下一行或上一行?,php,mysql,database,Php,Mysql,Database,我有一个名为posts的表,在该表中有一个post_id为long的列和其他列ofc 如何按post_id从表中选择下一行或上一行 假设我目前的职位id是15。现在我需要选择下一行,在那里满足某些条件,所以我需要放入一些where子句 我不善于解释我的感受。我在找这样的东西: SELECT (next row) FROM posts WHERE post_draft=0 && post_approved=1 有人能帮我吗?关系数据库系统没有下一行或上一行的概念。这是因为在这样的
SELECT (next row) FROM posts WHERE post_draft=0 && post_approved=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,则可以根据结果集的给定顺序轻松选择下一个条目。显然,前一个条目也可能出现同样的情况 我会用这样的东西
$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";
假设post_id列是自动递增的,您可以尝试
在数据库中没有下一行或上一行的post\U id为0且post\U approved为1的post中选择*从post\U id中选择post\U id+1。生成新变量$previous=$post\U id-1;然后进行查询以选择其中id=$previous。另外,请检查此项,确保在使用查询之前先清理查询。PDO的狗屎,所以你总是有一个坚实的基础保护。@NikolayGanovski-$post_id-1将无法工作时,有差距。真棒,这就像一个魅力。为了选择上一行,我刚刚将post_id改为大于,改为小于,并将ORDER BY改为DESC,如果有人有一天偶然发现了这篇文章:Thank$post_id+1在有间隙时不起作用。如果下一个id是草稿或未经批准,该子查询也不会工作。@RickJames Hello!!!我假设post id是自动递增的,所以不可能有任何间隙…@RickJames:其次,我的假设是:他想在满足where条件的“post id”之后选择“next”post id…@RickJames so。。。如果发布id=1,其中草稿=0,发布批准=1。。。然后我们要显示post id=2的行。。同样,如果post_id=5,其中草稿=0,post_批准=1。。。然后我们要显示post id的行=6@RickJames我认为我的答案符合要求。。。但也许我理解错了这个问题。。。