在postgresql中使用子查询更新
我尝试使用子查询更新postgresql表在postgresql中使用子查询更新,sql,postgresql,Sql,Postgresql,我尝试使用子查询更新postgresql表 UPDATE bc SET (r, w) = ($1, $2) WHERE bc.sr_id IN ( UPDATE sr SET (r, w) = ($1, $2)
UPDATE
bc
SET
(r, w) = ($1, $2)
WHERE
bc.sr_id IN (
UPDATE
sr
SET
(r, w) = ($1, $2)
WHERE
si = $3 AND
rti = $4 AND
fc = $5
RETURNING sr.id
)
为什么返回错误?您不能像这样链接DML语句。您必须使用可写CTE
WITH buz AS
(UPDATE foo
SET num=0 WHERE num>5 RETURNING num)
UPDATE bar SET num=0 WHERE num IN
(SELECT num FROM foo);
SELECT * FROM foo;
SELECT * FROM bar;
错误消息是什么?从9.1版开始提供,如果您使用的是旧版本,则提供升级原因。