记录不存在就插入,存在就更新
| id | empno | ip |
|---|---|---|
| 1 | 3306 | 192.168.0.103 |
| 2 | 8080 | 192.168.0.104 |
| 3 | 22 | 192.168.0.105 |
| 4 | 443 | 192.168.0.106 |
INSERT INTO demo.t_emp_ip (empno, ip)
VALUES (8080, '192.168.0.104')

INSERT INTO demo.t_emp_ip (empno, ip)
VALUES (8080, '192.168.0.104')
ON DUPLICATE KEY UPDATE ip=VALUES(ip);

在结尾加上一个叫做ON DUPLICATE KEY UPDATE的子句,这个子句会让MySQL自动判断要插入的记录是不是违反了主键约束或者唯一性约束,换个意思就是说写入的数据在数据表里边是不是已经存在了?如果存在了,那么我们就去更新数据,如果不存在我们就去写入数据。那么在子句里边,我们看后边的表达式是把最新的 IP更新到已经存在记录了IP字段上,这样子就完成了数据的更新。当然了如果写入的数据在数据表里边存在,那么因此的语句该写入还是正常写入的。