选择下一个/上一个mysql

时间:2010-11-14 23:24:56

标签: sql mysql

我已经编写了一个MySQL语句来使用创建时间戳的项目来选择下一个项目,但是当两个或多个项目具有完全相同的时间戳时我遇到了问题。为了使项目ID更加混乱,创建的日期并不总是有序,请参阅下面的虚拟数据。

  

ID |创建
  ~~~~~~~~~~~~
  10 | 1289780100个
  11 | 1289780100个
  12 | 1289780100< - 当前项目
  13 | 1289780100个
  14 | 1289780050个
  15 | 1289780150

我需要一个可以选择prev& amp;的SQL语句。按创建的下一项(两个查询没问题),然后是ID。我已经厌倦了一些不同的查询,但要么陷入困境,要么陷入“上一个”和“上一个”。 “下一步”是一样的。

谢谢, 欧文

2 个答案:

答案 0 :(得分:2)

SELECT *
FROM items
WHERE created >= current_item_created AND ID >= current_item_ID
ORDER BY created ASC, ID ASC LIMIT 1,1

SELECT *
FROM items
WHERE created <= current_item_created AND ID <= current_item_ID
ORDER BY created DESC, ID DESC LIMIT 1,1

答案 1 :(得分:2)

获取prev_id:

SELECT   
  t1.id, t1.name, t1.prev as prev_id  
FROM   
(SELECT mt.id, mt.name, @prev_id as prev, @prev_id := id   
FROM `main_table` mt, (SELECT @prev_id:=0) ni   
ORDER BY name ASC) as t1;  

获取next_id - 只需更改排序

Here is full example