id | count
1 | 1
3 | 1
5 | 1
2 | 2
4 | 3
我想知道上一张和下一张唱片。 id为'5'后的记录为id'2'。 所以我提出了这个问题。
select id from test
where id != 5 and count > 1
LIMIT 1
结果没问题,但如果我想知道id'3'之后的记录,则返回id'2'。我期待id'5'。
所以我改变了那个问题。
select id from test
where id != 5 && count >= 1
LIMIT 1
但它再次返回错误的结果。 它返回id'1'
如果有相同的值,我如何获取上一条或下一条记录? 请告诉我。
答案 0 :(得分:0)
好像你按计数订购? 如果要选择下一个值5,它应该是这样的: 1.首先,您需要在结果中添加订单号。 2.然后通过过滤row_number获得所需的结果。
SELECT row_number
FROM
(SELECT id, @rownum := @rownum + 1 as row_number
FROM test
CROSS JOIN (SELECT @rownum := 0) r ORDER by count) T1
WHERE id = 5
INTO @concreate_order_number;
SELECT id
FROM
(SELECT id, @rownum := @rownum + 1 as row_number
FROM test
CROSS JOIN (SELECT @rownum := 0) r ORDER by count) T2
WHERE row_number > @concreate_order_number
LIMIT 1;