mysql插入不重复记录

方法1:
一句sql解决

INSERT INTO gcm_users(name, gcm_regid, created_at)

SELECT 

'$name', '$gcm_regid', NOW() 

FROM dual 

WHERE NOT EXISTS(SELECT * FROM gcm_users WHERE name='$name' )

其中,gcm_users是需要进行数据插入的表,'$name', '$gcm_regid', NOW() 是需要插入的一条记录。

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. 



方法2:使用INSERT INTO… ON DUPLICATE KEY UPDATE

链接:

http://blog.zol.com.cn/2299/article_2298921.html

http://blog.lyphp.com/archives/527






方法3:使用符合主键,多个判断条件字段组合成一个复合主键
链接:

方法4:建唯一索引  用ignore into插入数据


方法5:使用存储过程,不知道mysql是否适用?

http://bbs.csdn.net/topics/390316341





当数据达到上百万条的时候,以上几种方法,哪个方法的性能最佳?

在相关的例上创建一个唯一索引 create unique index ..


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL的UPDATE JOIN操作是用来根据两个或多个表之间的关联条件,同时更新多个表的记录。在某些情况下,使用UPDATE JOIN可能会导致插入重复记录。 原因可能有以下几点: 1. 关联条件不准确:在UPDATE JOIN语句中,需要明确定义两个或多个表之间的关联条件。如果关联条件定义不准确,可能会导致多个匹配的记录被更新,从而插入重复记录。 2. 数据冲突:如果在UPDATE JOIN操作中更新的字段存在唯一性约束,而更新操作引起了唯一性冲突,那么会出现插入重复记录的情况。 3. 重复数据:如果被更新的表中存在重复的数据,则在UPDATE JOIN操作中可能会出现插入重复记录的情况。例如,如果更新时的关联条件匹配到了多条相同的记录,则每一条匹配的记录都会被更新,从而插入重复记录。 为了避免在UPDATE JOIN操作中插入重复记录,可以采取以下措施: 1. 仔细定义关联条件:确保UPDATE JOIN语句中的关联条件准确无误,只匹配到需要更新的记录,避免多余的匹配。 2. 检查唯一性约束:在更新操作之前,先检查被更新的字段是否存在唯一性约束,确保不会引起唯一性冲突。 3. 清理重复数据:如果被更新的表中存在重复的数据,可以先进行数据清理,删除重复记录,然后再执行UPDATE JOIN操作。 总之,要确保在使用MySQL的UPDATE JOIN操作时不插入重复记录,需要注意关联条件的准确性、唯一性约束的检查以及数据的清理工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值