回答

收藏

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

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

我有一个包含一系列唯一ID的表A。我有另一个表B,其中包含一些此ID,但不是每个ID,一个名为value的字段和另一个名为idcategory的字段。在此表B中,由于类别不同,id可能会出现几次。
. Z$ G3 c3 G$ Z我想以唯一的方式列出表A中的所有id,并以定义的类别(idcategorie =* s( s& |6 |% I( r7 }
1)列出表B中关联的特定值。表A中的ID无法显示在表B中,但是无论如何我都希望在最终结果中获得此信息,并且不能重复。
" l0 ^6 U  q7 m9 Q7 p这是一个例证:$ a, ?0 `0 q4 Y9 _; q
表A
' P; Y8 x- I  ^; Hid+ r) o3 c/ k! q3 |
-----! n8 R0 V+ y, v  I& |2 ^( c
14 |0 I: \" ?3 Q0 T3 ^+ z
23 S9 Y6 t* {0 }! K( C) Z
3
, M  A& m& K2 v49 g. ~, t3 f( B7 M; m: Q2 l9 i
54 Z& P  \9 ^, X# ?$ A+ L- m
67 |7 I, W( ]. ~- C+ _& ^+ o
7" U2 j: J" V7 r) f
8& t9 f+ E* K* B6 K
表B
% c6 @! P% J5 J: yid | idcategory  | value
* d! |+ }$ Y" |, N+ j3 I! p------------------------
$ e+ ?* b0 J7 p$ ~9 ?1  |   1         |  red$ j+ o3 h; s$ _, k1 y
1  |   2         |  circle+ o. B3 k- d" [/ X; Y
2  |   1         |  green- _8 f7 n* P7 K0 }. a
3  |   1         |  blue
# `# x5 X7 V. l/ S" O3  |   2         |  square
- r& P8 |/ j' v( [1 J* X4  |   1         |  green  d! Y  h( ?8 N0 O% Q
4  |   2         |  circle
# R0 U8 }- _0 ^9 P% p9 t5  |   1         |  red
' |& ?+ Y- y! }/ C5  |   2         |  square
5 Y3 o7 F! I% B0 u3 C1 s( n8  |   2         |  circle, i! F, {# K4 v. p& W
结果& H% q* w. C2 v
id | idcategory  | value2 W+ G, |' `5 r; ~; l, t
------------------------! m$ w9 ~% [# e  C( ~3 n7 M3 q
1  |   1         |  red$ B3 P. R  V% o' d. O4 @
2  |   1         |  green( A8 X6 P( `9 y0 W( m
3  |   1         |  blue
5 y* T* N  g( C0 y4  |   1         |  green3 q9 U) ~* X9 z8 C/ Y" z9 Y
5  |   1         |  red
( s* X2 Q: _' g  d' l% h  m6  |   null      |  no value
- K8 ~. l. C( h7  |   null      |  no value, [2 @; [: ]; y
8  |   null      |  no value) P8 x! @9 e! w7 ?' ]/ l8 \2 s' S, k! y7 e
在postgreSQL中实现此目标的最佳方法是什么?LEFT JOIN?UNION?5 b6 h. }0 v  Y) N
               
; x  v1 F  N; G; f4 g解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则