排序没有提到下面如何从表以前&下一个ID具有结构:获取前行标识,而在ID
+----+---------+---------------------+
| id | urgency | timestamp |
+----+---------+---------------------+
| 1 | 0 | 2013-01-01 00:00:00 |
| 2 | 2 | 2013-01-01 00:00:00 |
| 3 | 1 | 2013-01-05 09:30:00 |
| 4 | 2 | 2013-01-01 00:00:00 |
| 5 | 2 | 2013-01-01 00:00:00 |
| 6 | 1 | 2013-01-06 10:00:00 |
| 7 | 0 | 2013-01-01 00:00:00 |
| 8 | 0 | 2013-01-03 00:00:00 |
| 9 | 1 | 2013-02-01 13:30:00 |
| 10 | 0 | 2013-01-04 00:00:00 |
+----+---------+---------------------+
表进行排序如下:尿急递增,时间戳递增, ID ASC
这里是排序表:
+----+---------+---------------------+
| id | urgency | timestamp |
+----+---------+---------------------+
| 1 | 0 | 2013-01-01 00:00:00 |
| 7 | 0 | 2013-01-01 00:00:00 |
| 8 | 0 | 2013-01-03 00:00:00 |
| 10 | 0 | 2013-01-04 00:00:00 |
| 3 | 1 | 2013-01-05 09:30:00 |
| 6 | 1 | 2013-01-06 10:00:00 |
| 9 | 1 | 2013-02-01 13:30:00 | <= CURRENT_ID
| 2 | 2 | 2013-01-01 00:00:00 |
| 4 | 2 | 2013-01-01 00:00:00 |
| 5 | 2 | 2013-01-01 00:00:00 |
+----+---------+---------------------+
有没有办法从MySQL选择一些地方的位置CURRENT_ID - 1或CURRENT_ID + 1?
我能做的是执行一个简单的查询:
SELECT
id
FROM
MY_TABLE
ORDER BY
urgency asc,
timestamp asc,
id asc
通过创建结果PHP一个循环,并寻找合适的位置,但是这是一个表,将会增加非常快。因此,这不是一个选项...希望有另一种解决方案,您可以建议
我怀疑这是可能的。只是缓存数据可能会有更多的运气。 – 2013-03-21 14:32:08
我不明白 - 在你的例子中,你想找到id = 6或2? – 2013-03-21 14:46:35
@杰克,它当然是可能的,看到这[sqlfiddle](http://www.sqlfiddle.com/#!2/08ab1/1) – PinnyM 2013-03-21 14:49:19