mysql 批量 update 问题

2020-07-09 17:17:22 +08:00
 FenixVu

|cno |cname |tno | |1001|zhangsan|101| |1002|zhangsan|102| |1003|zhangsan|103|

UPDATE course
    SET cno = CASE tno
        WHEN 1001 THEN '1.57' 
        WHEN 1002 THEN '1.3'
        WHEN 1003 THEN '1.2' 
    END
WHERE tno IN (1,2,3)

返回

1 queries executed, 1 success, 0 errors, 0 warnings

查询:UPDATE course SET cno = CASE tno WHEN 1001 THEN '1.57' WHEN 1002 THEN '1.3' WHEN 1003 THEN '1.2' END WHERE tno IN (1,2,3)

共 0 行受到影响

执行耗时   : 0 sec
传送时间   : 0 sec
总耗时      : 0.001 sec

为啥???

2202 次点击
所在节点    MySQL
8 条回复
zshneedmoney
2020-07-09 17:27:10 +08:00
啥意思?这没有符合条件的数据可不就是 0 行收到影响
FenixVu
2020-07-09 17:33:34 +08:00
@zshneedmoney

当条件 'tno' 是 1001 的时候 把 cno set 为 '1.57'
难道是我理解错了么
qiayue
2020-07-09 17:43:33 +08:00
WHERE tno IN (1,2,3)
要改成
WHERE tno IN (1001,1002,1003)
littleylv
2020-07-09 17:46:37 +08:00
你的 tno 不是 101,102,103 么,WHERE tno IN (1,2,3) 没有符合的数据
DonaldY
2020-07-09 17:50:16 +08:00
when 后面是表达 bool 吧。
FenixVu
2020-07-09 19:10:07 +08:00
@qiayue @littleylv 我试了下 都不太行...
qiayue
2020-07-09 20:11:39 +08:00
语法错了

UPDATE course
SET cno = CASE
WHEN tno=1001 THEN '1.57'
WHEN tno=1002 THEN '1.3'
WHEN tno=1003 THEN '1.2'
ELSE cno
END
WHERE tno IN (1001,1002,1003)
JasonLaw
2020-07-09 20:11:43 +08:00
能够清楚地表达一下你的“为啥”是什么吗?反正我是不明白你的问题是什么

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/688613

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX