目的:给表插入数值前先判断是否存在已插入的记录,已插入则不执行,未插入则执行
-
优势:
- 减少后台逻辑代码量,避免重复代码
- 减少代码数据库查询交互次数
-
语法 :
INSERT INTO table(field1, field2, fieldn)
SELECT 'field1', 'field2', 'fieldn' FROM DUAL
WHERE NOT EXISTS(SELECT field FROM table WHERE field = ?)
- 使用:
insert into user_test (user_id, test_id,test_score)
select '1','1',0 from dual where not exists(select user_id,test_id from user_test where user_id='1' and test_id='1');
- 解析:
- MyBatis书写:
- 后台传参:userId,testId
<insert id="insertInitScore" parameterType="java.lang.String">
insert into user_test (user_id, test_id,test_score) select #{userId},#{testId},0 from dual where not exists(select user_id,test_id from user_test where user_id=#{userId} and test_id=#{testId});
</insert>