我可以在SQL UPDATE内使用内部SELECT吗?
技术问答
458 人阅读
|
0 人回复
|
2023-09-11
|
我有一个像这样的数据库:
7 R7 P5 d! Q9 p! @4 B表foo有列id,name 表bar有列id和foo_id0 P2 t# ^8 H; Z9 S
我有一个带有的传入HTTP查询foo.name,我想bar在bar.foo_idset中适当插入一行。因此,例如:, p$ G a% d$ k; N
> SELECT * FROM foo;
( W; N( R W( a" C9 M, p+ S% `0 Tid name8 e" z, }6 A; x3 a$ Z0 O- u
------ -------! x0 G7 t$ g# U2 A. n
1 "Andrey"
; W9 P! Q6 j/ B" f(1 row)# ~( t8 w/ ]/ c* T! L. F
x) ~9 D2 e; u* j* c> SELECT * FROM bar;9 c4 @6 C- B& d
(0 rows)* R, |$ D. D, y8 B; K% L
给定"Andrey",是否有一个我可以执行以下查询的查询:: l7 y) {8 n$ D3 ^7 P* Y5 s9 K
> SELECT * FROM bar;
. h3 w8 W- w/ W- t3 Eid foo_id
# i/ _# @- `) Q4 b, K# \2 d------ -------
! M" e/ Q. |- p% U9 ^/ M1 1
# n% G7 q8 `. k8 c- c, {(1 row)
$ x. k% N! f$ n( `' y: j我在考虑以下方面:* v2 P$ C. b% U( @
> UPDATE bar SET foo_id=(SELECT id FROM foo WHERE foo.name=?)2 F) d3 n1 P. k# P- `
但这似乎是错误的,因为SELECT的返回集是值,而不是值…5 N" N$ s* ~# p/ D
' z& p- P0 l3 T1 v k' V$ g
解决方案: |
|
|
|
|
|