我可以在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解决方案: |
|
|
|
|
|