2016-09-05 20 views
1

PostgreSQLでは、フィールドを増分したいですが、時にはnullです。 nullでなければ、そのフィールドを1に増やし、nullならば1に設定しますか?postgres sql、NULLが存在する場合にインクリメントする方法

insert into table (id, inc) values('a',1) on conflict(id) do update set inc=inc; 

idがすでに存在し、incが、それは動作しませんnullです。

提案がありますか?

答えて

5

あなたは​​3210機能の助けを借りていることを実行できます。

INSERT INTO mytable (id,inc) VALUES ('a',1) 
ON CONFLICT (id) 
DO UPDATE SET inc = coalesce(mytable.inc,0) + 1; 

キーポイントは次のことを意味し、表現coalesce(mytable.inc,0)です:mytable.incNULLでない場合は、その値を使用し、それ以外の値を使用0

関連する問題