SQL一次更新多条数据
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值例:想将serviceId=36的number变为20serviceId=37的number变为30serviceId=38的number变为40该怎么做?切记不要循环sql语句,拼一条sql语句就解决。有两种方法:方法一:(当表里没有主键或者唯一索引的情况)数据循环遍历按照下方格式when…then…(WHEN 36 T
·
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标准语法!
更多推荐
已为社区贡献1条内容
所有评论(0)