【发布时间】:2012-06-22 18:12:10
【问题描述】:
简单的问题,但我似乎找不到简单的解决方案:
在给定以下数据的情况下,根据当前步骤编号获取上一步和下一步唯一 HEX ID 的最有效方法是什么:
----+-------------+----------------
ID | UnqID |步骤编号 |
----+-------------+----------------
21 | BcDeF | 1 |
22 | GhIjKL | 2 |
23 | MnOPq | 3 |
24 | | RsTuV | 4 |
25 | wXyZa | 5 |
----+-------------+----------------
例如:
假设提供的步骤是3,我如何获得2 和4 的唯一HEX ID?
谢谢!
编辑
这是我目前正在使用的,但对我来说似乎效率不高??
SELECT
nxt.stepnum AS NextStep,
nxt.unqID AS NextUnqID,
prv.stepnum AS PrevStep,
prv.unqID AS PrevUnqID
FROM foo w,
(
SELECT stepnum, unqID FROM foo WHERE stepnum > 3 ORDER BY stepnum LIMIT 1
) AS nxt
,
(
SELECT stepnum, unqID FROM foo WHERE stepnum < 3 AND ORDER BY stepnum DESC LIMIT 1
) AS prv
WHERE w.stepnum = 3
【问题讨论】:
-
ID和STEPNUM都是唯一的吗? -
是的,一个是 PK,另一个是 VARCHAR(7) HEX 字符串。
-
上一个和下一个基于什么?不保证 mysql 中的行顺序。见here
-
stepnums 之间是否有任何差距,或者他们保证会增加+1? -
步骤可能有差距;即:1,2,4,5。