У меня есть таблица, которая имеет следующие столбцысоздания псевдо связанный список в SQL
table: route
columns: id, location, order_id
и имеет такие значения, как
id, location, order_id
1, London, 12
2, Amsterdam, 102
3, Berlin, 90
5, Paris, 19
Можно ли сделать SQL SELECT заявление в Postgres который вернет каждую строку вместе с id со следующим самым высоким order_id? Так что я хочу что-то вроде ...
id, location, order_id, next_id
1, London, 12, 5
2, Amsterdam, 102, NULL
3, Berlin, 90, 2
5, Paris, 19, 3
Благодаря
Вау, это круто, я никогда не слышал о функции задержки. Как преформатант является функцией? Делает ли это lag() один раз для всей таблицы? Или это будет порядок для каждой строки? – dan
Это ** аналитическая функция **. В этом случае двигатель упорядочивает строки, а затем для каждой строки получает значение из строки прецедента. Итак, у вас есть полное сканирование таблицы и сортировка. –
, и если вы хотите запаздывать более одного столбца, то есть добавить отставание (местоположение) поверх (order by order_id desc) как next_location. Будет ли это второй сорт? И если мне также нужен предыдущий идентификатор и местоположение, это будет третий и четвертый сорт? – dan