• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    mysql插入前判断数据是否存在的操作

    业务场景:需要记入访客的访问情况,但不能重复记入

    可以插入前进行判断要插入的数据是否存在业务代码如下 :

    INSERT INTO t_topic_vistor(user_id,topic_code) SELECT '218', 
    'XQ33019920170811142528217' FROM DUAL WHERE NOT EXISTS(SELECT * 
    FROM t_topic_vistor WHERE user_id = 218 and 
    topic_code='XQ33019920170811142528217')

    语法如下:

    INSERT INTO table(field1, field2, fieldn) SELECT 'field1', 
    'field2', 'fieldn' FROM DUAL WHERE NOT EXISTS(SELECT field FROM 
    table WHERE field = ?)

    补充知识:MySql 不存在则插入,存在则更新或忽略

    前言

    在插入数据时,可能需要忽略或替换掉重复的数据(依据某个字段),这时可以在应用层处理,也可以使用复杂的 SQL 语句来处理(如果仅仅知道一些简单的 SQL 语法的话),当然也可以使用一些简单的 SQL 语法,不过它并不是通用所有的数据库类型。

    以下所有实例仅针对MySQL而言,并不能随意用于其它数据库

    实例

    表名称:student

    表字段:

    Column Name Primary Key Auto Increment Unique
    id true true
    name true
    age

    初始表数据:

    id name age
    1 Jack 18

    注:以下所有的示例都需要被插入的数据中需要存在UNIQUE索引或PRIMARY KEY字段,同时这里引入表的主键id,并设置成自动递增,后面可以看到它的变化

    1. 不存在则插入,存在则更新

    1.1 on duplicate key update

    如果插入的数据会导致UNIQUE 索引或PRIMARY KEY发生冲突/重复,则执行UPDATE语句,例:

    INSERT INTO `student`(`name`, `age`) VALUES('Jack', 19)
     ON DUPLICATE KEY 
     UPDATE `age`=19; -- If will happen conflict, the update statement is executed
    
    -- 2 row(s) affected
    

    这里受影响的行数是2,因为数据库中存在name='Jack'的数据,如果不存在此条数据,则受影响的行数为1

    最新的表数据如下:

    id name age
    1 Jack 19

    1.2 replace into

    如果插入的数据会导致UNIQUE 索引或PRIMARY KEY发生冲突/重复,则先删除旧数据再插入最新的数据,例:

    REPLACE INTO `student`(`name`, `age`) VALUES('Jack', 18);

    -- 2 row(s) affected

    这里受影响的行数是2,因为数据库中存在name='Jack'的数据,并且id的值会变成2,因为它是先删除旧数据,然后再插入数据,最新的表数据如下:

    id name age
    2 Jack 19

    2. 避免重复插入

    关键字/句:insert ignore into,如果插入的数据会导致UNIQUE索引或PRIMARY KEY发生冲突/重复,则忽略此次操作/不插入数据,例:

    INSERT IGNORE INTO `student`(`name`, `age`) VALUES('Jack', 18);

    -- 0 row(s) affected

    这里已经存在name='Jack'的数据,所以会忽略掉新插入的数据,受影响行数为0,表数据不变。

    以上这篇mysql插入前判断数据是否存在的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • pgsql查询优化之模糊查询实例详解
    • C#使用EF连接PGSql数据库的完整步骤
    • 简单的pgsql pdo php操作类实现代码
    • PostgreSQL教程(二十):PL/pgSQL过程语言
    • MySQL锁阻塞的深入分析
    • mysql查看死锁与去除死锁示例详解
    • Mysql查看死锁与解除死锁的深入讲解
    • PgSQl临时表创建及应用实例解析
    上一篇:mysql json格式数据查询操作
    下一篇:Mysql查看死锁与解除死锁的深入讲解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    mysql插入前判断数据是否存在的操作 mysql,插入,前,判断,数据,