回答

收藏

postgresql:有条件且无重复的联接

技术问答 技术问答 291 人阅读 | 0 人回复 | 2023-09-11

我有一个包含一系列唯一ID的表A。我有另一个表B,其中包含一些此ID,但不是每个ID,一个名为value的字段和另一个名为idcategory的字段。在此表B中,由于类别不同,id可能会出现几次。
6 ?$ U* M. k* E) F3 W0 y2 {我想以唯一的方式列出表A中的所有id,并以定义的类别(idcategorie =5 _6 b# H& _# v+ H9 {9 @
1)列出表B中关联的特定值。表A中的ID无法显示在表B中,但是无论如何我都希望在最终结果中获得此信息,并且不能重复。) M! s) ^9 z2 v- v! d2 s. k
这是一个例证:
) A4 \& E6 Z! b/ k表A9 ?+ j8 c$ L# f
id
3 ]4 b* `8 O4 e( H1 w1 s3 l$ v-----
6 Z9 [: A! l, ^# x1# q+ X1 J5 g& [0 C( L8 r
2
* O9 j) d. R) N5 w3
3 G6 D: h0 H8 P0 B/ k+ o  c4
& T8 ?- M( \2 C' u6 P& u# c. w5) c# W$ l# ]( K' o7 @/ ~
6
- R1 X3 r& |! v6 n; g0 E75 I+ |1 {2 A) r% O
88 |! a% H% G4 V7 w
表B
, s) z0 J+ k2 b' w( b3 \7 N& Pid | idcategory  | value0 `, h# w5 X+ m# N
------------------------" v) p- A9 ?/ ?9 j( ^$ O
1  |   1         |  red0 ~+ f8 m6 P# I  t) h% l
1  |   2         |  circle
$ f3 k* ~( Z6 _; V) L$ O4 t2  |   1         |  green! d1 {1 r' K2 T
3  |   1         |  blue
) L9 i+ B/ @: A* u. d# N3  |   2         |  square
3 ]" W& X0 A% O2 |$ M4  |   1         |  green8 Z4 q, a5 F3 k. d; c0 a8 S
4  |   2         |  circle
5 i" r  V- ^& X3 ]5  |   1         |  red+ ^7 Y$ m; b0 r" \0 n6 r% @
5  |   2         |  square+ Y" V0 F+ @, S. s
8  |   2         |  circle" ?% L5 f$ Z: p0 }7 z
结果
. H# `" F) i- N- @id | idcategory  | value1 y: s3 I$ N7 A/ c0 ]2 u6 `; k
------------------------
6 I! {2 W8 `- F2 [4 U1  |   1         |  red
; K7 M4 j. O; L: M2  |   1         |  green: z; [5 E0 g) x; R8 Y
3  |   1         |  blue
- x3 ?) B7 H; S/ S" L4  |   1         |  green
4 `# }& y, ?" o7 I* x( W  ^5  |   1         |  red, J0 H6 I8 C. Y
6  |   null      |  no value
" {$ X* z: \6 [4 N. q9 l( ?$ b. X7  |   null      |  no value* D5 x% |( d6 I3 B/ ]# U
8  |   null      |  no value0 V5 `6 _. k( D, U1 N
在postgreSQL中实现此目标的最佳方法是什么?LEFT JOIN?UNION?
3 j+ |5 s) J6 ]& c& a$ O               
( z1 K% U; R2 p! u解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则