2010-09-05 69 views
1

我想要做一些更新,這在邏輯上看起來像下面 -PostgreSQL的:更新問題

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

但從documentation它看起來像這類型的更新,目前沒有在PostgreSQL中實現。除了經典風格之外,是否有任何解決此問題的方法(經典我的意思是set x1 = value1, x2=value2,.....風格)?

回答

3

你可以這樣做:

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 

aditional的狀況可能需要:

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