在sql中创建一个伪链表

dan*_*dan 3 sql postgresql aggregate-functions

我有一个包含以下列的表

table: route
columns: id, location, order_id
Run Code Online (Sandbox Code Playgroud)

并且它具有诸如的价值

id, location, order_id
1, London, 12
2, Amsterdam, 102
3, Berlin, 90
5, Paris, 19
Run Code Online (Sandbox Code Playgroud)

是否有可能在postgres中执行一个sql select语句,它将返回每一行以及带有下一个最高order_id的id?所以我想要......

id, location, order_id, next_id
1, London, 12, 5
2, Amsterdam, 102, NULL
3, Berlin, 90, 2
5, Paris, 19, 3
Run Code Online (Sandbox Code Playgroud)

谢谢

Flo*_*ita 6

select 
  id, 
  location, 
  order_id,
  lag(id) over (order by order_id desc) as next_id
from your_table
Run Code Online (Sandbox Code Playgroud)