经常会遇到要更新一个数据库,满足条件
1.对已经有数据进行更新
2.对没有的数据进行添加
到底使用插入语句呢?
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
还是更新语句呢?
UPDATE table_name SET 列名称 = 新值 WHERE 列名称 = 某值
还是说判断一些,有则更新,无则添加呢?
其实不然,我们有以下方法
- 根据主键和唯一索引判断是否需要更新,其内部实现则为对需要更新的数据进行删除再添加。
REPLACE INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
- 根据主键和唯一索引判断是否需要更新,更新只更新update后的字段
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
ON DUPLICATE KEY UPDATE 列1=values(列1),列2=values(列3)
以上两个方法有什么不同呢?
第一种会更新全部字段更新,第二种我们可以选择更新某几个字段
有时候某个字段是我们后期处理的,和原始数据不一样,也不希望被初始化,则可以使用第二个。