zoukankan      html  css  js  c++  java
  • mysql -- 处理重复值(insert ignore 和 replace )

    表或者结果集有重复值时,会包含重复记录,需要采用某种方法标识这些重复的记录并移除他们:

    防止表中出现重复记录,可以使用主键或唯一索引来防止出现重复的记录

    create table asset(
        asset_id int not null,
        asset_ip varchar(255) not null,
        asset_name varchar(255) not null
    )ENGINE=InnoDB default charset = utf8

    可以设置(asset_id)为主键,以确保不出现重复记录,语句如下:

    create table asset(
        asset_id int not null,
        asset_ip varchar(255) not null,
        asset_name varchar(255) not null,
        primary key(asset_id)
    )ENGINE=InnoDB default charset = utf8

    也可以设置唯一索引,来强制记录是唯一的,语句如下:

    create table asset(
        asset_id int not null,
        asset_ip varchar(255) not null,
        asset_name varchar(255) not null,
        unique(asset_id)
    )ENGINE=InnoDB default charset = utf8

    对于可能出现重复的记录,可以考虑使用insert ignore 语句,

     insert into asset(asset_id,asset_ip,asset_name) values(1,'192.168.3.208','中国上海'),(2,'192.168.3.163','中国北京'),(1,'192.168.9.153','中国天津');
    //对于insert ignore ,如果插入的记录并没有和现在的记录发生冲突,则正常插入;如果有重复发生,那么insert ignore 会保留现在的记录,丢弃新插入的记录(本例中,会丢弃第三条记录)

    还可以考虑采用 replace语句

    replace into asset(asset_id,asset_ip,asset_name) values(1,'192.168.3.208','中国上海'),(2,'192.168.3.163','中国北京'),(1,'192.168.9.153','中国天津');

    //对于replace ,如果记录是新的,那么等同于 insert ,如果是重复记录,那么新的记录会替换旧的记录
  • 相关阅读:
    13. Spring—AOP—JDK 的动态代理
    12. Spring — AOP 面向切面编程
    28-1 父组件传递数据给子组件 — props基本用法—驼峰命名说明
    【洛谷 1596】湖计数
    【洛谷 1280】尼克的任务
    【洛谷 3884】二叉树问题
    【洛谷 3384】模板树链剖分
    【洛谷 2089】烤鸡
    【洛谷 1706】全排列问题
    【洛谷 2692】覆盖
  • 原文地址:https://www.cnblogs.com/daijiabao/p/11295028.html
Copyright © 2011-2022 走看看