回答

收藏

条件存在时从另一个表更新一个表中的多行

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

我有两张桌子。
' o9 G3 k: }, Y7 y) x1 K) Z表1 包含的公司的地理位置在经纬度坐标中以lat / lng坐标进行地理定位the_geom
' s) s- C! ]. R表2 还包含 表1 中未地理参考的相同公司,以及数百个地址已地理参考的其他公司。7 }* l1 d# u% N* V6 ~! `% z
我需要做的就是将 Table1* 公司的the_geomlat / lng值插入 表2中 的相应条目中。这些插入可以基于的共同点是该列。
+ I' G6 P7 j6 k
***address( G" ?5 E7 e; Q5 }3 C: }; j1 x+ x6 \
我敢肯定,这是一个简单的问题,但是我很少使用SQL。0 L; a" [' `' p
               
& Y$ y- R1 ~; a" w1 I" k. N解决方案:
) r7 s! n7 G4 }' Z; U                3 o% ^& {0 H0 M

. v8 y4 L! i6 C( q1 c7 U5 {5 B! {4 ]
; I  {8 R8 S+ l2 |, C, B                假设
) y) m$ s% ]' z! g
, {" C9 ]. T6 w; _) ]7 n5 |插入“ the_geom”纬度/经度值' x- \" V/ A$ B* S* Y

  V  i5 V  D  p; f6 E% }  z9 k: K您实际上是要 更新 table2中的现有行:
/ B3 f% c; `# |! M/ KUPDATE table2 t2
2 Y4 w% M9 e, N! D& vSET    the_geom = t1.the_geom, Z* t! o9 L! k. i' Z0 Z# t
FROM   table1 t1# e9 s2 t8 Z, \% ^2 j' ~3 n; _, Q
WHERE  t2.address = t1.address$ G* x6 }. t  Z6 j/ b6 v" k) J
AND    t2.the_geom IS DISTINCT FROM t1.the_geom; -- avoid empty updates
, H9 u. q* r: m4 ~6 f还假设该address列具有UNIQUE值。" \% A; Z% Y' o7 n" |4 W/ ?
有关详细信息,请UPDATE参见此处的优秀手册。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则