回答

收藏

我可以在SQL UPDATE内使用内部SELECT吗?

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

我有一个像这样的数据库:
; A# A; R0 c* L, O表foo有列id,name 表bar有列id和foo_id
# p0 j7 ^5 \% t" o) p0 t我有一个带有的传入HTTP查询foo.name,我想bar在bar.foo_idset中适当插入一行。因此,例如:
1 T3 k5 q" X. _& K> SELECT * FROM foo;
$ _% I7 g+ _1 K  tid     name, C7 \: G! [; ?: a% S/ ?
------ -------
& o8 k3 V2 J9 J* U6 g' _9 [) ~6 l1      "Andrey"' d- Z* s9 N$ L4 }
(1 row)& [- p& A- p% j6 x2 T$ g7 r
7 e$ O0 t0 U5 V% U
> SELECT * FROM bar;: e0 ?9 a# k9 J. `7 X- l# e) G
(0 rows). l' D; G) M" R+ [1 v6 ]
给定"Andrey",是否有一个我可以执行以下查询的查询:
  j7 _7 v. s$ k$ _# w% }> SELECT * FROM bar;) U/ T3 B& ?6 g3 K2 C
id     foo_id
1 A- Y% B, L" |3 K3 x8 Q6 S/ G$ U------ -------
' n% y$ {; y6 L* o: F( F9 P) q7 g1      1
; ~( o; }- y5 r1 w& ^0 [2 |$ _7 f- O7 n(1 row)& L- s" y) m0 l
我在考虑以下方面:  r# t2 i* T: x: T
> UPDATE bar SET foo_id=(SELECT id FROM foo WHERE foo.name=?)8 C4 c, Q6 B8 P" O0 o; N! {) f
但这似乎是错误的,因为SELECT的返回集是值,而不是值…7 J5 L- O% {. r; \9 W5 k
                / s( f% Q$ S9 B
解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则