问题引出
案例:某个餐桌(id)花了多少钱(num)
如果4号餐桌点了一份西红柿4元,我们可以插入;如果3号餐桌点了一份西红柿4元,我们可以修改
你选择insert或者update的原因是你知道他原来有没有数据
如果你不知道呢???
一般我们的逻辑为
先查询,如果没有,插入;反之修改
if not exists (select ) insert else update
最简单直观的问题;发送两条SQL语句吧,性能问题
解决方法
有则改之无则加勉,数据库中同样也有相似的问题,有就修改,没有就插入
ON DUPLICATE KEY UPDATE 就是解决,如果有数据就修改,如果没有数据就插入的问题
第一次执行(数据库中没有id 为4的数据)
INSERT INTO hello (id,num) VALUES (4,4) ON DUPLICATE KEY UPDATE id = 4 ,num = 4+num;
第二次执行(数据库中有id为4的数据)
INSERT INTO hello (id,num) VALUES (4,4) ON DUPLICATE KEY UPDATE id = 4 ,num = 4+num;
Query OK, 2 rows affected