当前位置:首页 > 系统运维 > 正文内容

MySQL插入处理重复键值的2种不同处理方案

a8116255316年前 (2010-06-07)系统运维13

我们大家都知道当unique列在一个UNIQUE键上需要插入包含重复值的记录的时候,其默认insert的时候有时报错误,MySQL插入处理重复键值的2种不同的处理 *** ,下面我们对其进行分别介绍。

先建立2个测试表,在id列上创建unique约束。

MySQL select * from test2;   +-----+------+------+   | id | name | type |   +-----+------+------+   | 201 | aaa | 1 |   | 202 | bbb | 2 |   | 203 | ccc | 3 |   | 101 | xxx | 5 |   +-----+------+------+   4 rows in set (0.00 sec)  

MySQL插入处理重复键值 *** 1、REPLACE INTO

发现重复的先删除再插入,如果记录有多个字段,在插入的时候如果有的字段没有赋值,那么新插入的记录这些字段为空。

MySQL select * from test1;   +-----+------+------+   | id | name | type |   +-----+------+------+   | 101 | xxx | NULL |   | 102 | bbb | 2 |   | 103 | ccc | 3 |   | 201 | aaa | NULL |   | 202 | bbb | NULL |   | 203 | ccc | NULL |   +-----+------+------+   6 rows in set (0.00 sec)  

需要注意的是,当你replace的时候,如果 *** 入的表如果没有指定列,会用NULL表示,而不是这个表原来的内容。如果插入的内容列和 *** 入的表列一样,则不会出现NULL。例如

MySQL select * from test1;   +-----+------+------+   | id | name | type |   +-----+------+------+   | 101 | xxx | 5 |   | 102 | bbb | 2 |   | 103 | ccc | 3 |   | 201 | aaa | 1 |   | 202 | bbb | 2 |   | 203 | ccc | 3 |   +-----+------+------+   6 rows in set (0.00 sec)  

如果INSERT的时候,需要保留 *** 入表的列,只更新指定列,那么就可以使用第二种 *** 。

MySQL插入处理重复键值 *** 2、INSERT INTO ON DUPLICATE KEY UPDATE

发现重复的是更新操作。在原有记录基础上,更新指定字段内容,其它字段内容保留。例如我只想插入test2表的id,name字段,但是要保留test1表的type字段:

MySQL select * from test1;   +-----+------+------+   | id | name | type |   +-----+------+------+   | 101 | xxx | 5 |   | 102 | bbb | 2 |   | 103 | ccc | 3 |   | 201 | aaa | 1 |   | 202 | bbb | 2 |   | 203 | ccc | 3 |   +-----+------+------+   6 rows in set (0.00 sec)  

如果INSERT的时候,只想插入原表没有的数据,那么可以使用其他的MySQL插入处理重复键值的 *** 。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://www.2345hao.cn/blog/index.php/post/20928.html

分享给朋友:

“MySQL插入处理重复键值的2种不同处理方案” 的相关文章

windows 7/8.1正在启动windows时间长的解决方法

windows 7/8.1正在启动windows时间长的解决方法

正在启动windows时间长怎么办 小编带来了Windows 7/8.1正在启动windows时间长解决方法,假如有朋友在安装完Windows系统之后一直停留在“正在启动windows”的话,不妨试一试下文的方法哦~ 原因:Windows 7/8.1不完全支持UEFI,需要CSM(Comp...

windows 7系统的电脑发出嘟嘟嘟的声音该怎么解决?

windows 7系统的电脑发出嘟嘟嘟的声音该怎么解决?

在某些电脑中,机器内部蜂鸣器与系统的声音输出方案是相关联的,这样一来会导致当系统输出声音时,即使电脑没有连接外部音响或耳机,也会通过内置蜂鸣器发出“嘟嘟哔哔”的声音。这个问题主要出现在Windows 7电脑中,假如你的电脑恰好遇到了这样的问题,可参考下面的方法来解决: 1、在桌面“计算机”图标上右...

windows 7查看电脑近期使用情况确定有没有被他人使用

windows 7查看电脑近期使用情况确定有没有被他人使用

我一个朋友最近装装了Windows 7,他总感觉有人用了他的电脑,但是一直不确定,他想知道有没有人动用他的电脑,问我有没有办法 我说设置一下就行了: 启动Windows 7,在搜索栏中输入编辑组,马上就搜索到了编辑组策略,点击即可启动程序编辑组策略。依次展开组策略左侧树形列表的计算机配置/管理模...

Windows7播放电影视频蓝屏无论什么格式都会蓝屏

Windows7播放电影视频蓝屏无论什么格式都会蓝屏

问:我在Windows 7 Ultimate X64下播放电影视频时,不管什么格式都会蓝屏,错误代码“0x00000124”。换解码器、播放器不行,换驱动、内存也不管用。在不同的电脑上也试过,仍然蓝屏。请问是哪里的问题,如何解决 答:64位 Windows 7直接使用PotPlayer x64就...

windows 7/8/xp系统关闭自动播放功能禁止音频媒体自动播放

windows 7/8/xp系统关闭自动播放功能禁止音频媒体自动播放

Windows 7/8系统: 控制面板——自动播放——取消掉为所有媒体和设备设置自动播放 winXP系统: 开始—运行—gpedit.msc—计算机配置—管理模板—系统—关闭自动播放—已启用—所有驱动器—确定  关闭自动运行功能说明: 一旦您将媒体插入驱动器...

windows 7怎么设置密码永不过期?

windows 7怎么设置密码永不过期?

下面小编以Windows 7 64位为例,介绍下密码是如何设置永不过期的。  1、在桌面上打开“开始”菜单,或者点击“Win+R”快捷键将“运行”对话框打开。  2、运行对话框打开后,在里面中输入“lusrmgr.msc”字符命令,就可以打开“本地用户和组程序”。...