MSSQL更据记录查询结果去更新或插入数据
INSERT INTO pms_statistic (
id,
tenantId,
tenantName,
isDeleted,
createTime
)
VALUES
(
6257,50,'保存或修改0',1,'2020-01-00'
) ,(
6258,51,'保存或修改1',1,'2020-01-01'
) ,(
6259,52,'保存或修改2',1,'2020-01-02'
) ,(
62510,53,'保存或修改3',1,'2020-01-03'
)
ON DUPLICATE KEY UPDATE tenantId = VALUES(tenantId),tenantName = VALUES(tenantName)
,isDeleted = VALUES(isDeleted),createTime = VALUES(createTime);
别激动,上面的是MYSQL的,由于在MYSQL中可以使用唯一主键进行如题操作,提升效率,但是目前在MSSQL中没有更好的办法,只能用笨办法:
1、先用if exists查记录
2、有记录则更新
3、没有记录则插入一条主键记录后再更新
注意:如果是slect没有记录后的执行返回的操作记录数应该是:2(插入+更新)
sql_editLog = @"if exists(select * from editLog where id= '" + keyValue + "')begin " +
" update editLog set " + sql_editLog + "where id='" + keyValue + "'end else begin " +
" INSERT INTO editLog (id) VALUES ('" + keyValue + "') " +
" update editLog set " + sql_editLog + "where id='" + keyValue + "' end";