在MySQL中找到“下一个”最高ID

时间:2011-09-04 15:56:01

标签: mysql codeigniter

我正在开发一个Web应用程序,其中有许多我希望用户浏览的非常相似的页面。这些“页面”的数据存储在一个数据库中,该数据库具有唯一的ID作为主键。

我想在每个查询数据库的页面上都有一个“NEXT”按钮,找出下一个最高ID是什么,并显示该id的数据。我的问题是有几个条件:

  • 有时页面可能会被删除或删除,这意味着ID中存在空白,所以我不能只做-1。
  • 我只需要返回“active”== 1
  • 列的页面

有没有人有任何提示或建议?谢谢!

6 个答案:

答案 0 :(得分:9)

这样的事情?

SELECT id FROM table WHERE id > '$id' AND active = '1' ORDER BY id ASC LIMIT 1

PREV按钮需要这样的东西:

SELECT id FROM table WHERE id < '$id' AND active = '1' ORDER BY id DESC LIMIT 1

答案 1 :(得分:3)

  select t.* 
    from table t
   where t.id = 
         (select min(s.id)
            from table s
           where s.active = 1
             and s.id > target);

答案 2 :(得分:2)

   SELECT id 
    FROM pages
   WHERE id > $current_id AND active = 1
ORDER BY id ASC
   LIMIT 1

答案 3 :(得分:2)

我认为我不太了解你的情景,但无论如何:

SELECT id
FROM table
WHERE id > $lastid AND active = 1
ORDER BY id ASC
LIMIT 1

答案 4 :(得分:1)

SELECT id
FROM table
WHERE id < $lastid AND active = 1
ORDER BY id DESC
LIMIT 1

这应该可以准确地为您提供所需的内容,ID最高的活动页面低于当前页面。

答案 5 :(得分:0)

使用Codeignier's active record class CIAR

然后将$this->db->select_max();放入您的应用程序中以获取行的最大可能ID。