MySQL如果数据不存在,插入新数据,否则更新实现方法
为SQL =插入{ $ ECS ->表('cat_lang ')}(cat_id,lang_id,cat_name,关键词,cat_desc)
值({ $ cat_id },{ $ K },{{ $瓦尔'cat_name} },{ { 'keywords美元的Val} },{{ $瓦尔'cat_desc} })
在重复的密钥更新cat_name ={} } { 'cat_name美元价值,cat_desc ={} } { 'cat_desc美元价值,关键词={} } { 'cat_desc美元价值;
重要的是要注意主键必须是唯一的。在这里,我使用的是分类ID和语言ID的双主键机制。
键是单键或主键。
(1)替换了密钥存在,不存在插入。
替换成t_test创建表` t_test `(|
`艾奇` int(11)不为空的默认'0',
`价值` varchar(21)不为空的默认,
` ICOUNT ` int(11)不为空的默认'0',
主键(`艾奇`)
= MyISAM引擎默认的字符集GBK |)
对于这样一个表,当我们想记录识别码= 1,价值= 'a'and ICOUNT = 0,因为我们不知道如果有任何一项技术= 1表中,我们选择5月1日,然后我们将看看有什么结果。如果有,请使用更新来更新。如果没有,则使用INSERT插入。
然而,有时,当大量的数据被操作时,有时一个带有主键的SELECT查询将使用2S,如果不关心旧数据,那么减少不必要的操作是非常重要的。
使用替换语句可以完成上面的两个语句,语法几乎是插入的。如上述操作可写为替换t_test集艾奇= 1,价值= 'a',多= 0,伊克伊;表1,删除旧的数据。然后插入新数据。否则直接进入数据。
(2)关键的存在被更新,非存在被插入。
插入…关于重复密钥更新
需要根据原始记录进行操作的。至于计数表在多领域,当没有记录,价值的插入是0,当一个记录,价值需要更新值加1,然后替换不能实现这个功能。可以使用插入,基本语法是插入到…关于重复密钥更新…如果上述语句是。
插入t_test集艾奇= 1,价值= 'a',value2 = 1重复关键更新value2 = value2 + 1;
如果表中有多个惟一索引,例如,添加唯一键。到价值领域。当表中有IKey和价值两个独特的指标,取代将删除所有数据项,作为其唯一的索引值相同,然后插入新记录。例如,表中有两条记录。
+ + + + ------ ------- --------
艾奇值多| | | |
+ + + + ------ ------- --------
| 2 |一| 10 |
| 1 | B | 40 |
+ + + + ------ ------- --------
替换t_test集艾奇= 1,价值= 'a',多= 0;在表的两个记录被删除,和一个新的记录插入。
然而,插入t_test集艾奇= 1,价值= A = 0,多重复密钥更新更新只更新一个记录。效果相当于1 t_test。