SQL 语句级避免重复插入—— Insert Select Not Exist

SQL 语句级避免重复插入—— Insert Select Not Exist转自:https://snowolf.iteye.com/blog/1568926想要插入一条数据,要避免重复插入,又不想折腾两回数据库连接操作,可以参考如下办法。Sql代码INSERTINTOtable(column1,column2,column3…columnN)SELECTvalue1,value2,value3…valueNFROMdualWHE…

转自:https://snowolf.iteye.com/blog/1568926

想要插入一条数据,要避免重复插入,又不想折腾两回数据库连接操作,可以参考如下办法。SQL 语句级避免重复插入—— Insert Select Not Exist 
Sql代码 

INSERT INTO table(column1,column2,column3 ...columnN)
SELECT value1,value2,value3 ...valueN
FROM dual
WHERE NOT EXISTS(
      SELECT *
      FROM table
      WHERE value = ?
);

 

dual是为了构建查询语句而存在的表,Oracle中很常见,配合INSERT … SELECT构建成我们需要的表,并指定了数据项. 
EXISTS通过这个判断是否存在的函数,就免去了我们做IF-ELSE的冗繁操作.SQL 语句级避免重复插入—— Insert Select Not Exist 

例: 
Sql代码 

			INSERT INTO content (
				detail,
				status,
				beginTime,
				endTime) 
			SELECT
				@detail,
				1,
				NULL,
				NULL
			FROM DUAL
 			WHERE NOT EXISTS(
 				SELECT contentId 
 				FROM content 
 				WHERE detail=@detail);

@detail是要存入的内容,这里对内容进行了检索,如果要这么做,最好对该字段做唯一约束,或加索引。SQL 语句级避免重复插入—— Insert Select Not Exist 
省掉了IF-ELSE,在iBatis配置一下就ok了,哈!SQL 语句级避免重复插入—— Insert Select Not Exist 

还有个更坚决的办法——replace into: 

Sql代码 

replace into blacklist(userInfoId,uid)
select userInfoId,uid from user_info u where uid in(
'u303565440','u303566922','u303515112','u303559738');

 

今天的文章SQL 语句级避免重复插入—— Insert Select Not Exist分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/33054.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注