Postgresql: проблема с обновлением - PullRequest
1 голос
/ 05 сентября 2010

Я хочу сделать некоторые обновления, которые логически выглядят так:

UPDATE    t1 
SET       (x1, x2) = (SELECT  x1, x2 
                              FROM    t1 
                              WHERE id_1 = 8 
                              AND id_2 =1 
                              AND id_3 = 3)
;

Но из документации похоже, что эти типы обновлений в настоящее время не реализованы в Postgresql.Есть ли обходной путь для этой проблемы, кроме классического стиля (под классикой я подразумевал стиль set x1 = value1, x2=value2,.....)?

1 Ответ

3 голосов
/ 05 сентября 2010

Вы можете сделать это:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...