回答

收藏

我可以在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解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则