回答

收藏

我可以在SQL UPDATE内使用内部SELECT吗?

技术问答 技术问答 161 人阅读 | 0 人回复 | 2023-09-11

我有一个像这样的数据库:
( Y$ t/ {  n, p表foo有列id,name 表bar有列id和foo_id- m" L$ [; I1 L9 h
我有一个带有的传入HTTP查询foo.name,我想bar在bar.foo_idset中适当插入一行。因此,例如:3 ?' r' W- D3 Y; ^3 m' e
> SELECT * FROM foo;+ i! }" v% q$ H4 R+ p; P/ Q
id     name5 ^* T7 t8 S6 Q8 B6 y' v- l
------ -------
, G& S* w6 c% L: G1      "Andrey"
. J- R" L) \  O' a) C' A+ X(1 row); H9 w3 l2 H: g& B5 M1 p

% b& _4 n3 r6 R- w0 R> SELECT * FROM bar;
( J0 y/ e& B; o3 S' T" D(0 rows)0 v. Q& q2 n" s4 D
给定"Andrey",是否有一个我可以执行以下查询的查询:1 F! z8 ?& C1 @: w2 @
> SELECT * FROM bar;: G1 l* R- ]$ [6 ?, l+ `; U) {' g  v% {
id     foo_id6 W; u( B) w0 B0 D% [( y
------ -------' R. b% S0 o1 |  G9 D- H
1      1
% p( E& i4 [0 Z. R# E4 ]& ?(1 row): c: g+ t2 d. Q0 N
我在考虑以下方面:
$ @  V  u& t$ T, D> UPDATE bar SET foo_id=(SELECT id FROM foo WHERE foo.name=?)
6 K* H! N; A9 k% u* u* H+ \但这似乎是错误的,因为SELECT的返回集是值,而不是值…
' T; @, V( P/ {, G( i0 F               
" i6 \' {: M* Q. B解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则