Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql:更新问题_Sql_Postgresql - Fatal编程技术网

Postgresql:更新问题

Postgresql:更新问题,sql,postgresql,Sql,Postgresql,我想做一些更新,逻辑上如下所示- UPDATE t1 SET (x1, x2) = (SELECT x1, x2 FROM t1 WHERE id_1 = 8 AND id_2 =1 AND id_3 = 3) ; 但从表

我想做一些更新,逻辑上如下所示-

UPDATE    t1 
SET       (x1, x2) = (SELECT  x1, x2 
                              FROM    t1 
                              WHERE id_1 = 8 
                              AND id_2 =1 
                              AND id_3 = 3)
;
但从表面上看,这些类型的更新目前似乎没有在Postgresql中实现。除了经典样式(我所说的经典是指
设置x1=value1,x2=value2,…
样式)之外,这个问题还有其他解决方法吗?

您可以这样做:

UPDATE t1 SET x1 = a.x1, x2 = a.x2 FROM 
   (SELECT x1, x2 FROM t1 WHERE id_1 = 8 AND id_2 = 1 AND id_3 = 3) AS a
可能需要其他条件:

UPDATE t1 SET x1 = a.x1, x2 = a.x2 FROM 
   (SELECT id, x1, x2 FROM t1 WHERE id_1 = 8 AND id_2 = 1 AND id_3 = 3) AS a 
   WHERE a.id = t1.id