INSERT table SET ....... ON DUPLICATE KEY UPDATE ....

   日期:2020-10-15     浏览:86    评论:0    
核心提示:表结构: CREATE TABLE `student` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'auto_id', `name` varchar(20) NOT NULL DEFAULT '' COMMENT 'to_identified', `age` int(1) NOT NULL COMMENT 'old', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 C

表结构:

 CREATE TABLE `student` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'auto_id',
  `name` varchar(20) NOT NULL DEFAULT '' COMMENT 'to_identified',
  `age` int(1) NOT NULL COMMENT 'old',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='student_information' |

数据:

select * from student;
+----+--
--------+-----+
| id | name     | age |
+----+----------+-----+
|  1 | zhangsan |  23 |
|  2 | lisi     |  24 |
|  3 | wangwu   |  29 |
|  4 | abo      |  27 |
|  5 | justin   |  23 |
|  6 | anjilina |  19 |
|  7 | jiexika  |  18 |
|  8 | rose     |  10 |
+----+----------+-----+
8 rows in set (0.00 sec)

开始进行操作

INSERT student SET id=1,age=234  ON DUPLICATE KEY UPDATe age=456;
// id=1存在,age=234不存在
Query OK, 2 rows affected (0.00 sec)




mysql> select * from student;
+----+----------+-----+
| id | name     | age |
+----+----------+-----+
|  1 | zhangsan | 456 |
|  2 | lisi     |  24 |
|  3 | wangwu   |  29 |
|  4 | abo      |  27 |
|  5 | justin   |  23 |
|  6 | anjilina |  19 |
|  7 | jiexika  |  18 |
|  8 | rose     |  10 |
+----+----------+-----+
8 rows in set (0.00 sec)
//执行结果将id=1之前的age数值更新


mysql> INSERT student SET id=2,age=24  ON DUPLICATE KEY UPDATe age=456;    
// id=2存在,age=24存在
Query OK, 2 rows affected (0.00 sec)

mysql> select * from student;
+----+----------+-----+
| id | name     | age |
+----+----------+-----+
|  1 | zhangsan | 456 |
|  2 | lisi     | 456 |
|  3 | wangwu   |  29 |
|  4 | abo      |  27 |
|  5 | justin   |  23 |
|  6 | anjilina |  19 |
|  7 | jiexika  |  18 |
|  8 | rose     |  10 |
+----+----------+-----+
8 rows in set (0.00 sec)
//执行结果将id=2之前的age数值更新




mysql> INSERT student SET id=343,age=24  ON DUPLICATE KEY UPDATe age=456; // id=343不存在
Query OK, 1 row affected (0.00 sec)


mysql> select * from student;
+-----+----------+-----+
| id  | name     | age |
+-----+----------+-----+
|   1 | zhangsan | 456 |
|   2 | lisi     | 456 |
|   3 | wangwu   |  29 |
|   4 | abo      |  27 |
|   5 | justin   |  23 |
|   6 | anjilina |  19 |
|   7 | jiexika  |  18 |
|   8 | rose     |  10 |
| 343 |          |  24 |
+-----+----------+-----+
9 rows in set (0.00 sec)

//执行结果插入了一条id=343的数据

结论: 更新对应的值,如果存在就更新,不存在就插入

更多的官方解释可以查看Mysql手册:

https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服