欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

mysql 根据某一条件决定是否插入,从而解决插入问题

最编程 2024-04-19 13:06:20
...

exists :如果子查询查询到了列那么就为真。

not exists : 如果子查询查询不到结果则返回值为真。

如果配合 insertinto、select、update、delete的where 条件使用,就能根据某些条件,先判断条件是否满足在做相应的操作。

示例:

用户做报警插入时,需要要传入一个报警周期时间filterTime,在这个周期内不存在同样的一条记录才做新增,否则不需要新增,避免频繁报警。

INSERT INTO work_alarm_record(create_time, alarm_time, alarm_state,alarm_content,foreign_name,foreign_id,device_id,var_id)
 SELECT NOW(),#{insertDO.alarmTime},#{insertDO.alarmState}, #{insertDO.alarmContent},#{insertDO.foreignName},#{insertDO.foreignId},#{insertDO.deviceId},#{insertDO.varId}
FROM dual
        WHERE not exists (
                 SELECT id FROM work_alarm_record WHERE (alarm_state  = 4 or alarm_state  = 2)and var_id = #{insertDO.varId} and alarm_time > #{filterTime} ORDER
                BY alarm_time desc limit 1
    );

DUAL表

 MySQL中的DUAL表是一个虚拟表,用于返回一个行。DUAL表只包含一列和一行数据

* 做条件判断是需要借助DUAL表才能完成。

推荐阅读