使用Merge into实现: 存在则更新,不存在则插入

现有记录用户每天的访问次数记录表PD_VISITS
PD_VISITS
当需要记录用户某次访问数据时,需考虑该用户当天是否已存在记录。
存在则次数count+1,不存在则需插入一条count为1的该用户的访问记录。

Merge into的用法如下(loginName为当前用户,cdate为当天时间):

MERGE INTO PD_VISITS VI
USING(
		SELECT
			#{loginName,jdbcType=VARCHAR} AS LOGIN_NAME,
			#{cdate,jdbcType=DATE} AS CDATE
		FROM DUAL
)TMP
ON (VI.LOGINNAME = TMP.LOGIN_NAME AND VI.CDATE = TMP.CDATE)
WHEN MATCHED THEN
		UPDATE SET VI.COUNT = VI.COUNT + 1
WHEN NOT MATCHED THEN
		INSERT
			(LOGINNAME, CDATE, COUNT)
		VALUES(
				TMP.LOGIN_NAME,
				TMP.CDATE,
				1
		)

注意点:
1.merge into只能更改PD_VISITS表的数据,不能更改USING后那张表的数据;
2.on后面的条件一定要放到括号里


版权声明:本文为weixin_42446602原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。