PostgreSQL SQL,当存在空值时如何递增

4
在PostgreSQL中,我想要递增一个字段但有时它是null。如果它不是null,我该如何将该字段递增1,如果它是null,则将其设置为1
insert into table (id, inc) values('a',1) on conflict(id) do update set inc=inc;

如果id已经存在且incnull,它将无法工作。

有什么建议吗?

1个回答

10
您可以通过使用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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接