加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 钦州站长网 (https://www.0777zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql插入更新操作

发布时间:2022-11-23 11:17:49 所属栏目:MySql教程 来源:
导读:  同一条数据多次插入到数据库中,会形成脏数据,解决的办法是加上唯一索引,之后的操作会先在数据库中查找有没有存在这样一个唯一索引,如果不存在的话会往数据库里面插入一条新的数据数据库更新操作,如果存在的
  同一条数据多次插入到数据库中,会形成脏数据,解决的办法是加上唯一索引,之后的操作会先在数据库中查找有没有存在这样一个唯一索引,如果不存在的话会往数据库里面插入一条新的数据数据库更新操作,如果存在的话会进行更新的操作。如果在高并发的情景下上述操作不是原子性。解决的办法可以使用mysql 的关键字ON DUPLICATE KEY UPDATE。
 
  具体SQL展示如下
 
  INSERT INTO tbl_data_meter_r (
 
           FFM_ID,
 
           ZX_FLOW,
 
           FX_FLOW,
 
           SS_FLOW,
 
           TOTAL_FLOW,
 
           PIPE_VOLTAGE,
 
           PIPE_PRESSURE,
 
           FREEZE_DATE
 
          ) SELECT
 
           f.ID,
 
           h.ZX_FLOW,
 
           h.FX_FLOW,
 
           h.SS_FLOW,
 
           h.TOTAL_FLOW,
 
           h.PIPE_VOLTAGE,
 
           h.PIPE_PRESSURE,
 
           h.FREEZE_DATE
 
          FROM
 
           tbl_data_meter_h h,
 
           (
 
           SELECT
 
           a.ID
 
           FROM
 
           tbl_data_meter_h AS a
 
           INNER JOIN (
 
           SELECT
 
           max(FREEZE_DATE) AS FREEZE_DATE
 
           FROM
 
           tbl_data_meter_h
 
           GROUP BY
 
           IMEI
 
           ) AS b ON a.FREEZE_DATE = b.FREEZE_DATE
 
           GROUP BY
 
           a.IMEI
 
           ORDER BY
 
           a.FREEZE_DATE DESC
 
           ) s,
 
           tbl_file_flow_meter f
 
          WHERE
 
           h.ID = s.id
 
          AND f.IMEI = h.IMEI ON DUPLICATE KEY UPDATE FFM_ID =VALUES(FFM_ID),
 
           ZX_FLOW =VALUES(ZX_FLOW),
 
           FX_FLOW =VALUES(FX_FLOW),
 
           SS_FLOW =VALUES(SS_FLOW),
 
           TOTAL_FLOW =VALUES(TOTAL_FLOW),
 
           PIPE_VOLTAGE =VALUES(PIPE_VOLTAGE),
 
           PIPE_PRESSURE =VALUES(PIPE_PRESSURE),
 
           FREEZE_DATE =VALUES(FREEZE_DATE)
 
  使用上面的语句之后会发现一个问题,我定义的表id是默认自增,数据重复插入之后id会默认加一,插入一条不重复的数据会比上一条数据ID>2.
 
 

(编辑:PHP编程网 - 钦州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!