Sql 如果没有值,则在有插入值时更新

Sql 如果没有值,则在有插入值时更新,sql,postgresql,mybatis,Sql,Postgresql,Mybatis,我正在使用postgresql 9.4.1212。我正在写myBatis查询,但我不知道。 我能得到帮助吗 这是我的查询代码: insert into search_by_date (date,total_count) values (#{date},#{total}); 参数是map,如果有值,我想更新 这是我的“按日期搜索”表 column= > no(serial primary key) , date varchar(50),total_count(int) 您在Upsert操

我正在使用postgresql 9.4.1212。我正在写myBatis查询,但我不知道。 我能得到帮助吗

这是我的查询代码:

insert into search_by_date (date,total_count) values (#{date},#{total});
参数是map,如果有值,我想更新

这是我的“按日期搜索”表

column= > no(serial primary key) , date varchar(50),total_count(int)

您在Upsert操作中寻找的是什么。这将是PostgreSQL 9.5中的一项功能


您可以通过使函数执行相同的操作来实现它,首先检查匹配的行数。如果为0,则插入“如果更大更新”

在冲突时需要更新的列组上创建唯一索引

CREATE UNIQUE INDEX uidx_dt_ct ON search_by_date USING BTREE(date,total_count) ;  
在索引中指定的列上插入use ON CONFLICT子句时

    INSERT INTO search_by_date(date,total_count)
      VALUES( '02-05-2017'::DATE , 50 )
       ON CONFLICT(date,total_count)  
    DO UPDATE SET date = EXCLUDED.date, total_count = EXCLUDED.total_count;

可能的副本我不知道。。。对不起,我是纽比。。