回答

收藏

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

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

我有一个包含一系列唯一ID的表A。我有另一个表B,其中包含一些此ID,但不是每个ID,一个名为value的字段和另一个名为idcategory的字段。在此表B中,由于类别不同,id可能会出现几次。$ l* i( q8 Q% P) ~$ p7 [: X- H. s$ ^
我想以唯一的方式列出表A中的所有id,并以定义的类别(idcategorie =  K# c$ B/ H7 D$ M2 w% P$ \" t2 _4 q
1)列出表B中关联的特定值。表A中的ID无法显示在表B中,但是无论如何我都希望在最终结果中获得此信息,并且不能重复。
, |) a. a3 ]7 E" o% }, W这是一个例证:
8 J& i1 t6 }5 i: ^4 E3 q2 [2 _! p* U表A
6 f2 G$ ~' a" H! D( J: iid
# c1 x4 P5 R+ k) I6 s( @6 |------ \! ^+ F' c2 b1 t9 D6 N
13 J$ n4 e0 d/ U8 K/ E$ ^1 L5 |
2! D4 e' m7 Y! \9 |7 N$ L% J
35 E8 l7 f  _7 s* I; l
4
) D  C& t5 j  e5; a' Z6 R5 r7 C
6
! [$ P+ A0 `2 k# h# O7 p' \7
& B( m2 \% L4 l2 o: |8
$ _" g. l( _$ V  ], g9 k表B* r& h) p8 C$ [* H5 }, [
id | idcategory  | value
9 l3 X8 Z: v% A------------------------* W  a9 {9 _& v- Y% H
1  |   1         |  red
$ O) u/ S3 j1 k# o% G8 f1  |   2         |  circle
5 J9 q: R" m7 Z& @1 ^+ W2  |   1         |  green
: }/ ^5 K! `+ w( p3  |   1         |  blue
! c' M: t# W; w) Z6 J, X0 b3  |   2         |  square
# i' x5 l, P# F' a2 F" c: u! l7 c4  |   1         |  green
$ ~( H- O& ?# I% Z7 ?: h% N4  |   2         |  circle
- S% |. O: ^9 D5 b9 }" m5  |   1         |  red; J  f5 ^* a& ?7 B* E
5  |   2         |  square
  {* B: G9 j+ u0 R8  |   2         |  circle
) _* M& L/ w: E0 Z结果
3 E2 U+ f$ w9 tid | idcategory  | value
- d5 E, C" p( B/ [2 f% Q! h3 ~------------------------
5 j# o* W- L$ O, k1  |   1         |  red" f; z% {7 h1 i* Z+ Y/ j- F
2  |   1         |  green! s4 c9 [. U+ }  i' c% _
3  |   1         |  blue
: n$ ~+ m$ N+ ]3 s4 s4  |   1         |  green
6 [! ?$ e' T. a5  |   1         |  red$ I2 k  z  j) x8 U0 v
6  |   null      |  no value  v2 y- A9 x; Z. p. a, Q
7  |   null      |  no value
; _  D! i! k; F8 L0 \' @8  |   null      |  no value3 e- E$ @0 V+ D
在postgreSQL中实现此目标的最佳方法是什么?LEFT JOIN?UNION?  M" E+ ?7 k. a  g; P# C
               
7 z% E9 v7 r7 H5 j! `+ H3 [! J解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则