回答

收藏

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

本版积分规则