我有一个名为" posts
"的表格,并在该表格中包含" post_id
" (与其他列的c一长)。
如何从表中选择下一行(或上一行)," post_id
"?
让我们说出我现在的" post_id
"现在我需要选择满足某些条件的下一行,所以我需要放入一些where子句。
我觉得我很难解释这个。我正在寻找这样的事情:
SELECT (next row) FROM posts WHERE post_draft=0 && post_approved=1
有人可以帮我吗?
答案 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)