我可以在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
解决方案: |
|
|
|
|
|