2013-02-07 71 views

回答

9

像這樣:

UPDATE albumphoto SET order = 1 WHERE idtable = 1 AND idx = CAST (x AS INTEGER); 

(使用合適的數字類型,而不是INTEGER)。

7

或者簡單:

UPDATE albumphoto 
SET order = 1 
WHERE idtable = 1 
AND idx = split_part(text, ',', 1)::int -- or whatever type it is 
AND order IS DISTINCT FROM 1; 

expression::type是簡單的(非SQL標準)的Postgres的方式來投。手冊中的細節請參見Type Casts一章。
更多關於data types in PostgreSQL

我最後添加的謂詞是有用的,如果order可能已經1,在這種情況下,更新不會改變什麼,但費用仍然是相同的。反而不要做任何事情。相關(考慮最後一段):

而你在這裏做不需要的變量。

相關問題