【发布时间】:2011-08-20 06:50:39
【问题描述】:
如何在查询中选择下一行和上一行,但有条件:
我总是有 6 行,所以如果我有:
1, 2, 3, 4, 5, 6, 7, 8, 9
而我的 ID 是 2 结果一定是:
1,3,4,5,6,7
如果我的 ID 为 5,则结果必须是:
2,3,4,6,7,8
如果我的 ID 是 9,则结果必须是:
3,4,5,6,7,8
编辑:
(SELECT * FROM articulos
WHERE categoria = 'Y'
AND numero >=
(SELECT IF(
(SELECT COUNT(*) FROM articulos WHERE numero < X AND categoria = 'Y')<3,
(SELECT MIN(X) FROM articulos WHERE categoria = 'Y'),
(X-3)
))
ORDER by numero ASC LIMIT 6)
UNION
(SELECT * FROM articulos
WHERE categoria = 'Y'
AND numero <=
(SELECT IF(
(SELECT COUNT(*) FROM articulos WHERE numero > 1605 AND categoria = 'Y')<3,
(SELECT MAX(X) FROM articulos WHERE categoria = 'Y'),
(X+3)
))
ORDER by numero DESC LIMIT 6)
也许这就是解决方案
【问题讨论】: