我已经编写了一个MySQL语句来使用创建时间戳的项目来选择下一个项目,但是当两个或多个项目具有完全相同的时间戳时我遇到了问题。为了使项目ID更加混乱,创建的日期并不总是有序,请参阅下面的虚拟数据。
ID |创建
~~~~~~~~~~~~
10 | 1289780100个
11 | 1289780100个
12 | 1289780100< - 当前项目
13 | 1289780100个
14 | 1289780050个
15 | 1289780150
我需要一个可以选择prev& amp;的SQL语句。按创建的下一项(两个查询没问题),然后是ID。我已经厌倦了一些不同的查询,但要么陷入困境,要么陷入“上一个”和“上一个”。 “下一步”是一样的。
谢谢, 欧文
答案 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 - 只需更改排序