SQL一次更新多条数据

您所在的位置:网站首页 数据库更新信息 SQL一次更新多条数据

SQL一次更新多条数据

#SQL一次更新多条数据| 来源: 网络整理| 查看: 265

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

例:想将 serviceId=36的number变为20 serviceId=37的number变为30 serviceId=38的number变为40 该怎么做? 在这里插入图片描述

切记不要循环sql语句,拼一条sql语句就解决。 有两种方法:

方法一:(当表里没有主键或者唯一索引的情况)

数据循环遍历按照下方格式when…then…(WHEN 36 THEN 10)拼成字符串,然后拼成一条sql

修改单字段 UPDATE cd_demo SET number = CASE serviceId WHEN 36 THEN 10 WHEN 37 THEN 20 WHEN 38 THEN 30 END WHERE serviceId IN ( 36, 37, 38 ) AND user_pkgId = 160 修改多字段 UPDATE cd_demo SET number = CASE serviceId WHEN 36 THEN 10 WHEN 37 THEN 20 WHEN 38 THEN 30 END, number1 = CASE serviceId WHEN 36 THEN 100 WHEN 37 THEN 200 WHEN 38 THEN 300 END WHERE serviceId IN ( 36, 37, 38 ) AND user_pkgId = 160 方法二:(当表里存在主键或者唯一索引的情况,INSERT … ON DUPLICATE KEY UPDATE语句)

在这里插入图片描述

原理: 前提是当表里存在主键或唯一索引时使用 当id存在时,修改number和number1 当id不存在时,插入一条数据 数据循环遍历拼成字符串"(1,20,200,160),(4,30,300,160),(5,40,400,160)",然后拼成一条sql ON DUPLICATE KEY UPDATE 后面是要修改的字段

INSERT INTO cd_demo (id, number, number1,user_pkgId) VALUES (1,20,200,160), (4,30,300,160), (5,40,400,160) ON DUPLICATE KEY UPDATE number=VALUES(number), number1=VALUES(number1)

注意:ON DUPLICATE KEY UPDATE只是MySQL的特有语法,并不是SQL标准语法!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3