Вопрос по mysql – Как найти предыдущую и следующую запись, используя один запрос в MySQL?

8

У меня есть база данных, и я хочу узнать предыдущую и следующую запись, упорядоченную по идентификатору, используя один запрос. Я пытался сделать союз, но это не работает. :(

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

Есть идеи? Большое спасибо.

Ваш Ответ

1   ответ
16

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

Это гарантирует, чтоid поле находится в правильном порядке, прежде чем принимать лучший результат.

Вы также можете использовать MIN и MAX:

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

Следует отметить, чтоSELECT * не рекомендуется иметь в рабочем коде, поэтому назовите ваши столбцы в вашемSELECT заявление.

Error: User Rate Limit Exceeded Gabriel Solomon

Похожие вопросы