我可以在SQL UPDATE内使用内部SELECT吗?
技术问答
518 人阅读
|
0 人回复
|
2023-09-11
|
我有一个像这样的数据库:
# Y( ^% w) c9 W) B! L, P表foo有列id,name 表bar有列id和foo_id
" d5 O0 E& E* o( m( }& _我有一个带有的传入HTTP查询foo.name,我想bar在bar.foo_idset中适当插入一行。因此,例如:$ z4 C) |9 ~" @& H! S/ H# Y1 f
> SELECT * FROM foo;2 }$ x6 ^6 ]6 ^: k( V W
id name
2 L% m8 Z* z# H& a& k7 Q" `------ -------
9 d9 W) C- R' R' C8 [6 M) R6 ~% }! ~1 "Andrey"& l/ I# P9 W) F R H
(1 row)
) C: { j# a* Z* |, w# h
6 y6 P P9 q8 {: @; E# r> SELECT * FROM bar;
2 s, e; x$ X/ u% C(0 rows)
) ^4 I4 |* Y$ q& b! W2 N' `8 j给定"Andrey",是否有一个我可以执行以下查询的查询:
9 B5 v, Q9 p1 `4 @1 `> SELECT * FROM bar;7 R9 R. h2 q+ k3 o+ @; v0 d3 V+ N
id foo_id
% g0 U; i5 ?5 j) z1 g1 F5 H) R------ -------
; `; ^4 L# g+ X- ^1 1
% P8 _& j* j3 V6 ]5 }7 T# |(1 row)& k- h% f0 t. z8 H7 m5 v" |& Y: ~
我在考虑以下方面:
! d3 |" v+ F# w7 o [3 E> UPDATE bar SET foo_id=(SELECT id FROM foo WHERE foo.name=?)
3 a3 ?2 P1 c5 y- K/ @& c z- J但这似乎是错误的,因为SELECT的返回集是值,而不是值…9 X* x4 a: P. U. r3 O" I
' f, M7 X: u8 ?0 A/ g/ `解决方案: |
|
|
|
|
|