回答

收藏

在SQL中创建一个伪链表

技术问答 技术问答 186 人阅读 | 0 人回复 | 2023-09-14

我有一个包含以下各列的表  X7 H: m; a+ x
table: route
. N' t$ O5 b4 y" q7 W2 e9 Qcolumns: id, location, order_id
8 t0 c9 p  `6 I) X2 c4 w4 V$ n它具有诸如
8 z# c5 V$ S  w5 Uid, location, order_id# V8 l# C& K( u6 J% S
1, London, 12/ a6 K* r1 u: A. V7 i* @" v% S+ R
2, Amsterdam, 102
* l1 r" H1 I) A3 @( S3, Berlin, 90
) B9 J: \; _  N% Y5, Paris, 19( o6 n1 q9 O% [
是否可以在postgres中执行sql select语句,该语句将返回每一行以及具有下一个最高order_id的ID?所以我想要类似…
2 L+ J; l4 H' s  }$ C8 w# Qid, location, order_id, next_id6 _# f; c& _  I& h! G' j
1, London, 12, 5* O. v. Q" Z$ ?
2, Amsterdam, 102, NULL& T* y/ J5 M9 Q1 Y
3, Berlin, 90, 2! b$ {. O3 H6 ^6 K
5, Paris, 19, 3( G) J' q0 W. ]1 P
谢谢! ]9 `4 j& J5 k  b
                ! n- S. E9 l; e( ?
解决方案:
, T$ z; o* b5 j+ p               
! d3 A$ U$ r. T6 {8 {% R6 ]( a9 \$ A  r9 X' `/ [; E: n( ^# b4 J

% x- S7 N6 k$ r. S3 S9 E' }                select
1 J5 w! c, M& v: K  id, , n; }% l9 \9 m- @
  location, 7 R7 v0 X1 g! `' S1 Q' R
  order_id,/ S6 X. W1 `1 r  E. e; b9 s% D$ T
  lag(id) over (order by order_id desc) as next_id) F. A! k4 [" k4 L
from your_table
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则