mysql更新判断存在更新,不存在插入

32 篇文章 0 订阅

转:http://blog.csdn.net/zbz0425/article/details/45815635



MySQL 更新插入,可以执行类似oracle 的  merge 语句来做判断是更新还是插入

这就要介绍一下在MySql中INSERT语法具有一个条件DUPLICATE KEY UPDATE,这个语法和适合用在需要判断记录是否存在,不存在则插入存在则更新的记录。

具体的语法可以参见:http://dev.mysql.com/doc/refman/5.0/en/insert.html

基于上面这种情况,针对更新记录,仍然使用insert语句,不过限制主键重复时,更新字段。如下:

<code class="prettyprint" style="font-family: Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,serif; display: block; max-height: 600px; background-color: rgb(247, 247, 247);"><span class="pln">INSERT INTO t_member </span><span class="pun">(</span><span class="pln">id</span><span class="pun">,</span><span class="pln"> name</span><span class="pun">,</span><span class="pln"> email</span><span class="pun">)</span><span class="pln"> VALUES
    </span><span class="pun">(</span><span class="lit" style="color: rgb(128, 0, 0);">1</span><span class="pun">,</span><span class="pln"> </span><span class="str" style="color: rgb(128, 0, 0);">'nick'</span><span class="pun">,</span><span class="pln"> </span><span class="str" style="color: rgb(128, 0, 0);">'nick@126.com'</span><span class="pun">),</span><span class="pln">
    </span><span class="pun">(</span><span class="lit" style="color: rgb(128, 0, 0);">4</span><span class="pun">,</span><span class="pln"> </span><span class="str" style="color: rgb(128, 0, 0);">'angel'</span><span class="pun">,</span><span class="str" style="color: rgb(128, 0, 0);">'angel@163.com'</span><span class="pun">),</span><span class="pln">
    </span><span class="pun">(</span><span class="lit" style="color: rgb(128, 0, 0);">7</span><span class="pun">,</span><span class="pln"> </span><span class="str" style="color: rgb(128, 0, 0);">'brank'</span><span class="pun">,</span><span class="str" style="color: rgb(128, 0, 0);">'ba198@126.com'</span><span class="pun">)</span><span class="pln">
ON DUPLICATE KEY UPDATE name</span><span class="pun">=</span><span class="pln">VALUES</span><span class="pun">(</span><span class="pln">name</span><span class="pun">),</span><span class="pln"> email</span><span class="pun">=</span><span class="pln">VALUES</span><span class="pun">(</span><span class="pln">email</span><span class="pun">);</span></code><div class="save_code tracking-ad" style="display: none;" data-mod="popu_249"><a><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div><div class="save_code tracking-ad" style="display: none;" data-mod="popu_249"><a><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div>

注意:ON DUPLICATE KEY UPDATE只是MySQL的特有语法,并不是SQL标准语法!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值