2016-09-05 2 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

당신은 coalesce 기능의 도움으로 그것을 수행 할 수 있습니다

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.inc가없는 경우 NULL 다음 다른 값을 사용하여 그 값을 사용 0.

관련 문제