zoukankan      html  css  js  c++  java
  • mysql使用日常备忘

    批量插入数据时,如果主键是有业务意义的,并非自自增张,那么有可能在插入的数据中有与已存在的键值重复的,可以用如下方式来插入:

    INSERT IGNORE

    当要插入一个数据时,插入的字段值中主键字段或唯一索引字段的值不存在则插入,如果表中存在,则做UPDATE:

    REPLACE INTO

    REPLACE INTO做UPDATE的步骤实际上是先删除原数据,在根据新的数据做插入,这样就存在一个问题,如果replace into时的数据并不包含全部字段的值,那么没有包含的字段将没有数据。如果仅仅只是为了更新记录中的某几个字段,而不希望未更新的字段数据丢失,那么应该用:

    INSERT INTO  ON DUPLICATE KEY UPDATE 

    例如:

    表test,字段有trade_time(主键/唯一索引),total_money,fee三个字段

    INSERT INTO
      test
    SET
      trade_time = 2017081423,
      total_money = 100,
      fee = 100
    ON DUPLICATE KEY UPDATE
      total_money = total_money + 100,
      fee = fee + 100

    上面这条语句中trade_time是主键,意思是:如果表中没有主键为2017081423的记录,那么插入一条记录。如果已存在一条主键为2017081423的记录,那么更新这条记录的total_money和fee字段,并且是在原来值的基础上增加100

  • 相关阅读:
    MYSQL 优化(二),持续更新收藏
    一些linux命令 备份下
    lsyncd +xinetd+syncd 多服务器文件同步
    阿里slb+ecs+https
    微擎 从 php5 到php7 的各种填坑 持续更新
    lmap
    微擎的ifp ife ifpp
    工具索引 mark名字
    Funny Bug || Sky Hole
    mysql 查询小技巧
  • 原文地址:https://www.cnblogs.com/mysic/p/6910085.html
Copyright © 2011-2022 走看看