我可以在SQL UPDATE内使用内部SELECT吗?
技术问答
285 人阅读
|
0 人回复
|
2023-09-11
|
我有一个像这样的数据库:
, P: p* J5 X b7 Y' ?: }表foo有列id,name 表bar有列id和foo_id
* l" `3 `" P8 X我有一个带有的传入HTTP查询foo.name,我想bar在bar.foo_idset中适当插入一行。因此,例如:. Q# B& H5 ]' m2 y
> SELECT * FROM foo;
* F6 G- Q5 l8 Q% |1 hid name2 G& }1 W' @2 M5 V3 w# J
------ -------
7 @) X8 C3 d4 \0 Q0 `' }0 I4 w1 "Andrey"( a/ k: x- W- a# y* c/ {
(1 row)
" c9 O' I- e- }
& `) z4 Q% ^: O3 V" g) D> SELECT * FROM bar;
3 f8 }& d( [4 d% t2 Z(0 rows)$ T7 {" Z( Z, l8 {. o
给定"Andrey",是否有一个我可以执行以下查询的查询:5 I( o4 w) n3 u# O2 b1 e. Z7 d
> SELECT * FROM bar;6 w6 k, j! p |- q
id foo_id6 C, E' Q# D6 v) k
------ ------- \' J3 e) |+ T/ L) q
1 12 j. W/ h2 D3 H* H) a, g
(1 row)' a- b- H/ N$ y; ?# q
我在考虑以下方面:4 x) Z K/ {" Q2 J
> UPDATE bar SET foo_id=(SELECT id FROM foo WHERE foo.name=?)
! s& \1 Q: T6 @7 R$ W3 Q7 g但这似乎是错误的,因为SELECT的返回集是值,而不是值…$ G0 q* V- Z3 p
# ~6 Y; Q3 C; w5 D; t
解决方案: |
|
|
|
|
|