我可以在SQL UPDATE内使用内部SELECT吗?
技术问答
406 人阅读
|
0 人回复
|
2023-09-11
|
我有一个像这样的数据库:" Y# U2 C' }- N
表foo有列id,name 表bar有列id和foo_id$ X9 [: J, b1 ?& w3 T1 l
我有一个带有的传入HTTP查询foo.name,我想bar在bar.foo_idset中适当插入一行。因此,例如:
% Q$ x- o! k2 k> SELECT * FROM foo;4 |$ V- O1 v0 J6 W% t
id name
# U' T; V6 p- E! M' g: ?5 k------ -------
$ N$ ], Q7 Z. e+ `4 f' R ^1 "Andrey"8 B+ E+ z0 I8 j/ W
(1 row)' W4 \! }% I! x" U" Q
5 [4 X, L9 M5 j! t) | `/ ]6 R$ L# q
> SELECT * FROM bar;8 i0 Z1 x/ Y! p: Y- H0 u- n
(0 rows)7 O$ r8 }6 l& _9 }6 }/ U/ p I1 B
给定"Andrey",是否有一个我可以执行以下查询的查询:
: s" f# s8 f: y& T& d: e" f> SELECT * FROM bar;
* Q- `/ b) n) h: ^id foo_id
. F( a4 {! L7 @4 j% ^------ -------; w9 i. ~( g7 k1 j# {$ Z( W
1 1* t; E* } X @% w
(1 row)
% J I+ w- f8 q我在考虑以下方面:
# J! M8 E s4 P& a q T; c+ q! _& _> UPDATE bar SET foo_id=(SELECT id FROM foo WHERE foo.name=?)) Q& x& B1 m) m8 d
但这似乎是错误的,因为SELECT的返回集是值,而不是值… v9 {! I/ j" ]4 W$ r" P8 G. Q
. W7 j7 P- k& w' O$ z% T _
解决方案: |
|
|
|
|
|