MySQL можно ли при использовании SELECT как-то ссылаться на предыдущую строку выборки?

Рейтинг: 0Ответов: 1Опубликовано: 23.02.2023

Есть таблица:

CREATE TABLE `test` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `num` INT(10) UNSIGNED NOT NULL,
    PRIMARY KEY (`id`)
)

заполненная значениями num, например: 2, 5, 20.

Можно ли как-то сделать выборку типа:

SELECT num,num-[num из предыдущей выбранной строки] FROM test

чтобы получить на выходе такой ответ:

2, NULL
5, 3
20, 15

Ответы

▲ 0

Вы можете использовать функцию LAG() (доступна начиная с MySQL 8.0.22), которая позволяет выбирать значение столбца из предыдущей строки.

Как результат получится запрос:

SELECT num, LAG(num) OVER (ORDER BY id) - num AS diff
FROM test;