`
lony1107
  • 浏览: 7522 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

MySQL 插入不重复数据

阅读更多

开发的操作在一个多对多表中需要插入关联记录,实际上一条和多条在我的实现功能上没有差异,可就是多条重复记录看起来别扭,毕竟还是不好,于是琢磨这事情。

 

之前最naive的想法就是先对将要插入的记录进行一次查询,如果result set大小大于0则表明数据已经存在,不进行数据插入操作,否则insert into……,如今才明白可以一条SQL语句解决问题,利用MySQL的dual表,方法如下:

 

INSERT INTO users_roles

(userid, roleid)

SELECT 'userid_x', 'roleid_x'

FROM dual

WHERE NOT EXISTS (

  SELECT * FROM users_roles

  WHERE userid = 'userid_x'

  AND roleid = 'roleid_x'

);

 

其中,users_roles是需要进行数据插入的表,userid_x和roleid_x是需要插入的一条记录。

 

MySQL中的dual表解释如下:

Table - `dual`:a dummy table in mysql

 

mysql文档中对于dual表的解释:

You are allowed to specify DUAL as a dummy table name in situations where no tables are referenced:

mysql> SELECT 1 + 1 FROM DUAL;
        -> 2

DUAL is purely for the convenience of people who require that all SELECT statements should have FROM and possibly other clauses. MySQL may ignore the clauses. MySQL does not require FROM DUAL if no tables are referenced. 

分享到:
评论

相关推荐

    MySQL唯一索引重复插入数据解决方案总结.docx

    MySQL 唯一索引重复插入数据解决方案总结 MySQL 唯一索引重复插入数据解决方案总结是指在 MySQL 中遇到唯一索引重复插入数据时的解决方案。这种情况下,MySQL 会报一个 Duplicate entry 的错误信息,表示不能在索引...

    往数据库插入数据,相同的不插入

    当获取过来的是值往数据库插入的时候有相同的就不插入,将不同的插入到数据库中

    分享MYSQL插入数据时忽略重复数据的方法

    当程序中insert时,已存在的数据不插入,不存在的数据insert。在网上搜了下,可以使用存储过程或者是用NOT EXISTS 来判断是否存在

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

    业务场景:需要记入访客的访问情况,但不能重复记入 可以插入前进行判断要插入的数据是否存在业务代码如下 : INSERT INTO t_topic_vistor(user_id,topic_code) SELECT '218', 'XQ33019920170811142528217' FROM ...

    MySQL使用UNIQUE实现数据不重复插入

    当unique列在一个UNIQUE键上插入包含重复值的记录时,我们可以控制MySQL如何处理这种情况:使用IGNORE关键字或者ON DUPLICATE KEY UPDATE子句跳过INSERT、中断操作或者更新旧记录为新值。

    MySQL数据库主键重复原因分析及处理.pdf

    3. 数据库操作不当:如果数据库操作不当,例如在插入数据时没有正确地检查主键值,可能会导致主键重复。 为了解决主键重复的问题,需要对数据库进行优化和调整,例如: 1. 重新设计数据库架构,以确保每个表的主键...

    使用python3 实现插入数据到mysql

    今天小编就为大家分享一篇使用python3 实现插入数据到mysql,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    MySQL查询重复数据(删除重复数据保留id最小的一条为唯一数据)

    最近在做一个批量数据导入到MySQL数据库的功能,从批量导入就可以知道,这样的数据在插入数据库之前是不会进行重复判断的,因此只有在全部数据导入进去以后在执行一条语句进行删除,保证数据唯一性。 下面话不多说了...

    完美解决Thinkphp3.2中插入相同数据的问题

    今天在使用TP3.2插入数据的时候,为了避免插入相同的数据(所谓相同的数据,其主键相同或者是唯一索引的字段相同),我创建的索引如下图,主键索引为自增字段,不可能出现重复,即唯一索引可能会出现重复,我希望的...

    mysql 存储过程判断重复的不插入数据

    mysql存储过程中 下面是一个较常见的场景,判断表中某列是否存在某值,如果存在执行某操作 需要注意的是不能用if exists; exists可以在where后面或者在create object是使用,但是在if语句中不可以使用,只能用变通的...

    数据库表中插入重复数据的处理

    想往表中插入一条数据,如果表中没有该条数据才插入,如果已经存在该条数据不插入。  该怎么处理?  一个比较笨的办法,是先用select查找表中是否已经存在该数据,然后再根据返回的结果决定是否insert。这样做...

    防止MySQL重复插入数据的三种方法

    新建表格 CREATE TABLE `person` ( `id` int NOT NULL COMMENT '主键', `name` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '姓名', `age` int NULL DEFAULT NULL COMMENT '...

    mysql 原生语句中save 的写法汇总.docx

    在 MySQL 中,我们可以使用 IGNORE 关键字来实现数据不存在则插入,存在则无操作的操作。该方法的实现逻辑是,当插入语句出现主键冲突或者唯一键冲突时,不抛出错误,直接忽略这条插入语句。 例如,以下是使用 ...

    MySQL建立唯一索引实现插入重复自动更新

    给大家分享的是当向数据插入数据时,判断字段是不是存在,存在执行更新操作,如果不存在就执行插入操作的方法,有需要的朋友们可以参考借鉴。

    MySQL数据库考试试题及答案-34页

    INSERT 语句用于向数据表中插入一条记录。 18.正则表达式 在 MySQL 中,可以使用 REGEXP 运算符来使用正则表达式过滤数据。 19.SELECT 语句的重要性 在 MySQL 中,SELECT 语句是最重要的,也是使用最频繁的...

    《海量数据处理与大数据技术实战》、《MySQL技术大全:开发、优化与运维实战》作者 旨在分享各种编程语言、开发技术、分布式与微服

    面试官问我:MySQL如何实现无数据插入,有数据更新?我是这样回答的! 我这样分析MySQL中的事务,面试官对我刮目相看!! 如何添加新数据库到MySQL主从复制环境? 如何查询和删除MySQL中重复的记录? 怒肝两个月My

Global site tag (gtag.js) - Google Analytics