回答

收藏

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

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

我有一个包含一系列唯一ID的表A。我有另一个表B,其中包含一些此ID,但不是每个ID,一个名为value的字段和另一个名为idcategory的字段。在此表B中,由于类别不同,id可能会出现几次。: Y5 r- l% u" V- U( J8 E
我想以唯一的方式列出表A中的所有id,并以定义的类别(idcategorie =0 v  }1 s; x2 _* j
1)列出表B中关联的特定值。表A中的ID无法显示在表B中,但是无论如何我都希望在最终结果中获得此信息,并且不能重复。( }$ b  u, s$ s5 u
这是一个例证:
% Q7 V9 z# [& U0 C. d表A
) O4 y8 y1 V+ ^; Z! D, S2 d6 wid& F1 V. h% a% ~8 v8 C
-----0 [# ]3 a. M% e1 ^* D# Y6 v
1/ m7 f1 F9 k9 j* @1 f! I% s) w4 c
2
! u+ v9 f% `1 }4 m9 s5 i3+ t) Y# I# f9 }  J
4/ |/ S7 t9 U" r! y. B
5
! M  y1 }) o, ^: t2 O' ~8 }! s6
& S# U0 o, f3 d7
" V3 N# K: l5 x4 S  F2 `8" B+ x" D8 i% U2 A1 |. N" g. A( Y
表B! \6 A' L9 r% u3 A+ z
id | idcategory  | value8 C- o1 s) R( O; a: Y
------------------------9 _) H: [) p( u1 V; e, \7 P5 Y
1  |   1         |  red1 @: n' @. D2 \& P; v2 L
1  |   2         |  circle
% r+ p; L! ]  A& Q2 m2  |   1         |  green! G/ C# b2 o; U4 j: p
3  |   1         |  blue
& ?" X0 B$ e# t5 H. `/ `/ A/ M9 C3  |   2         |  square8 x! z8 G/ w2 B- J) L$ c9 S
4  |   1         |  green6 V5 @% [& @0 C
4  |   2         |  circle
! {" A$ i/ }7 |; P% A( M" ]& T" n5  |   1         |  red9 N  M" L/ V/ Z6 X2 C- v' M
5  |   2         |  square
, g! M0 {  W8 W* x5 [8  |   2         |  circle
4 s" g! C9 V7 l. Y! e结果
, v2 U8 p2 ~0 e$ y, ~, I5 Fid | idcategory  | value
+ B! l  c& s+ M( I------------------------
" d6 w- F0 P' w7 w: V8 n1  |   1         |  red
6 N  v: R. j$ V; o6 t' q$ B  E2  |   1         |  green; Y7 i* T$ g# c
3  |   1         |  blue4 r& o& B- l8 B& ~5 |) S8 J
4  |   1         |  green( l3 ~8 s/ `$ ^2 Q6 G. O" v; j
5  |   1         |  red; |/ T  |; b0 j1 c
6  |   null      |  no value
$ }, W- k$ `' a7  |   null      |  no value5 ^' c' r) x. X1 i0 `8 B
8  |   null      |  no value
5 n0 q. W  _+ ^# c* \3 L在postgreSQL中实现此目标的最佳方法是什么?LEFT JOIN?UNION?& k& T5 Q9 f) x1 [( ~' a0 Z
                9 P0 U/ _8 w# @% S" v4 M" D7 ~7 L
解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则