如果mysql上有相同的值,如何获取以前的记录

时间:2016-12-05 16:58:55

标签: mysql

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'

如果有相同的值,我如何获取上一条或下一条记录? 请告诉我。

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;