SQL一次更新多条数据 |
您所在的位置:网站首页 › 数据库更新信息 › SQL一次更新多条数据 |
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 |