How to find the previous and next record using a single query in MySQL?

前端 未结 1 1665
既然无缘
既然无缘 2020-12-17 21:46

I have a database, and I want to find out the previous and next record ordered by ID, using a single query. I tried to do a union but that does not work. :(



        
相关标签:
1条回答
  • 2020-12-17 22:11

    You need to change up your ORDER BY:

    SELECT * FROM table WHERE `id` > 1556 ORDER BY `id` ASC LIMIT 1
    UNION 
    SELECT * FROM table WHERE `id` < 1556 ORDER BY `id` DESC LIMIT 1
    

    This ensures that the id field is in the correct order before taking the top result.

    You can also use MIN and MAX:

    SELECT
        * 
    FROM
        table 
    WHERE 
        id = (SELECT MIN(id) FROM table where id > 1556) 
        OR id = (SELECT MAX(id) FROM table where id < 1556)
    

    It should be noted that SELECT * is not recommended to have in production code, though, so name your columns in your SELECT statement.

    0 讨论(0)
提交回复
热议问题