我可以在SQL UPDATE内使用内部SELECT吗?
技术问答
321 人阅读
|
0 人回复
|
2023-09-11
|
我有一个像这样的数据库:
5 m- Y/ d1 e% l( \表foo有列id,name 表bar有列id和foo_id( T: q7 D! \$ `7 J! l8 U. B* y( D; ?% b4 V
我有一个带有的传入HTTP查询foo.name,我想bar在bar.foo_idset中适当插入一行。因此,例如:) `3 V6 w: @# p4 k, Z h
> SELECT * FROM foo;4 k4 ^) j6 C- }8 L4 E& Z) q
id name8 J# _; ~% P8 A
------ -------; N! }! I5 Y3 G! a1 o8 _
1 "Andrey"4 k! X# l" e; W$ B( Q( a
(1 row)
0 z0 a) k9 H& e
7 U% g( B0 R' p, B3 n7 W> SELECT * FROM bar;7 S0 ~( ^4 G4 T9 t/ c2 d3 L
(0 rows)
5 }- _) ]: Q5 V) O2 F. e! R- C给定"Andrey",是否有一个我可以执行以下查询的查询:/ u+ `0 ?6 v5 Z) m/ M9 K
> SELECT * FROM bar;0 b4 }2 Z# z* M, D/ X4 I
id foo_id9 \* |9 W6 C7 [5 {" T* }3 ?6 ]
------ -------
- }* X# o! P$ z* f, Y5 X1 1; a! j3 _& c# f% {
(1 row)9 Z, y: e; Q5 S9 I" g
我在考虑以下方面:
$ E |9 _7 a+ Q. x> UPDATE bar SET foo_id=(SELECT id FROM foo WHERE foo.name=?)
: K5 c2 |; o! t- l) y! K. o但这似乎是错误的,因为SELECT的返回集是值,而不是值…9 v- s+ `" E' y9 f! ^ E
0 ?/ S7 q1 v" q) k; I9 c& V解决方案: |
|
|
|
|
|