优质网站策划,亚马逊的网站建设分析,黑帽seo排名优化,wordpress门户网站主题一、基本语法
ON DUPLICATE KEY UPDATE 语句基本功能是#xff1a;当表中没有原来记录时#xff0c;就插入#xff0c;有的话就更新。
使用注意事项如下#xff1a;
ON DUPLICATE KEY UPDATE语句根据主键id或唯一键来判断当前插入是否已存在。记录已存在时#xff0c;只…一、基本语法
ON DUPLICATE KEY UPDATE 语句基本功能是当表中没有原来记录时就插入有的话就更新。
使用注意事项如下
ON DUPLICATE KEY UPDATE语句根据主键id或唯一键来判断当前插入是否已存在。记录已存在时只会更新ON DUPLICATE KEY UPDATE之后指定的字段。如果同时传递了主键和唯一键以主键为判断存在依据唯一键字段内容可以被修改。
二、用法示例
下面基于Python语言给出具体使用示例
1. 在MySQL中建立 student 表将code设置为主键如下所示 2. 插入基础数据
3. 使用 ON DUPLICATE KEY UPDATE 更新数据。
假设我们要将第二条记录的name修改为Lily
# 数据库连接
conn pymysql.connect(host172.171.xxx.yyy,useradmin,passwdxxxxxx,dbasrank,port3306
)data [002, Lily]
SQL_FORMAT INSERT INTO student VALUES ({0}, {1}) ON DUPLICATE KEY UPDATE name {2}
sql_1 SQL_FORMAT.format(data[0], data[1], data[1])
print(sql_1) # INSERT INTO student VALUES (002, Lily) ON DUPLICATE KEY UPDATE name Lily with conn.cursor() as cursor:cursor.execute(sql_1) cursor.close()
conn.commit() # 提交查看数据库中第二条记录中的name已经被更新为Lily如下所示
【核心代码】
写法1
data [002, Lily]
SQL_FORMAT INSERT INTO student VALUES ({0}, {1}) ON DUPLICATE KEY UPDATE name {2}
sql_1 SQL_FORMAT.format(data[0], data[1], data[1])
print(sql_1) # INSERT INTO student VALUES (002, Lily) ON DUPLICATE KEY UPDATE name Lily 写法2
data [002, Lily]
SQL_FORMAT INSERT INTO student VALUES (%s, %s) ON DUPLICATE KEY UPDATE name %s
sql_1 SQL_FORMAT % (data[0], data[1], data[1])
print(sql_1) # Insert INTO student VALUES (002, Lily) ON DUPLICATE KEY UPDATE name Lily 三、补充说明
有大佬指出 ON DUPLICATE KEY UPDATE 存在严重的性能和其他隐患问题推荐改成 先查询一次分出新增集合和修改集合再分别进行批量新增和批量修改的方式进行并对批量修改时使用case when的方式实现。
参考地址为什么不建议使用ON DUPLICATE KEY UPDATE