`
lony1107
  • 浏览: 7673 次
  • 性别: 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 IGNORE`会更合适。 在实际应用中,你可能还需要考虑到并发性和性能因素。例如,如果你的数据库有大量的并发写操作,那么`INSERT IGNORE`可能更...

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

    总结来说,MySQL的UNIQUE约束是保证数据唯一性的关键工具,而`IGNORE`和`ON DUPLICATE KEY UPDATE`提供了在面对重复数据时的处理策略,使开发者能够根据需求灵活地维护数据库的完整性和一致性。了解并熟练运用这些...

    MySql三种避免重复插入数据的方法

    如果只是想避免插入重复数据而不需要更改已有数据,`INSERT IGNORE`就足够了。而`INSERT ON DUPLICATE KEY UPDATE`则在需要在冲突时更新数据的情况下非常有用。 在设计数据库时,确保正确设置主键和唯一索引也是...

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

    在本场景中,我们讨论的问题是如何在存储过程中判断表中的某一列是否存在特定的值,如果不存在则插入新的数据。这通常涉及到数据的完整性与避免冗余。 首先,我们来看一下给出的存储过程代码: ```sql delimiter $...

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

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

    MySQL删除重复记录

    MySQL作为最受欢迎的关系型数据库管理系统之一,提供了多种功能来处理数据,包括如何有效地删除重复记录。本文将深入探讨MySQL中删除重复记录的方法,以及如何利用其特性来优化数据管理流程。 ### MySQL删除重复...

    MySQL 批量插入,如何不插入重复数据?.zip

    计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习...

    MySQL处理重复数据的方法

    在MySQL中,处理重复数据是数据库管理的重要环节。在数据表设计时,有时我们需要确保某些字段的唯一性,以保持数据的准确性和一致性。这里,我们主要探讨如何防止和删除MySQL数据表中的重复数据。 首先,为了防止...

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

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

    很全面的MySQL处理重复数据代码

    总结来说,MySQL提供了多种手段来处理重复数据,包括通过设置主键和唯一索引来防止插入重复数据,使用 `COUNT`, `GROUP BY`, `HAVING` 来统计重复数据,以及利用 `DISTINCT` 或 `GROUP BY` 过滤重复数据。...

    MySql批量插入时,如何不插入重复的数据.zip

    计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习...

    使用python3 实现插入数据到mysql

    在Python中插入数据到MySQL通常涉及到两个步骤:编写SQL插入语句,然后通过游标执行这个语句。例如,以下代码展示了如何插入一条记录到名为'score'的表中: ```python sql = """ insert into score (sno, cno, ...

    向mysql数据表中插入数据失败的原因

    在MySQL数据库操作中,向数据表中插入数据是常见的任务,但有时会遇到插入失败的情况。这通常是由于多种因素导致的。以下将详细分析标题和描述中提到的几个可能导致插入失败的原因,并提供相应的解决策略。 首先,...

    MYSQL插入处理重复键值的几种方法

    在MySQL中,处理重复键值通常涉及到数据的插入操作,特别是在具有唯一约束或主键的表中。在上述示例中,我们有两个测试表`test1`和`test2`,它们都拥有一个名为`id`的主键,且在`id`列上创建了唯一约束。下面将介绍...

Global site tag (gtag.js) - Google Analytics