一个在mySQL中使用UPDATE易犯的逻辑错误

一个在mySQL中使用UPDATE易犯的逻辑错误

刚才在做一个UPDATE时,结果总是与预期有出入,分析了很长时间发现是在使用UPDATE的时候存在一个逻辑错误。
将问题抽象出来后是这样的:
如果表myTable中有
+----+---+-----+
| id | a | b   |
+----+---+-----+
| 1  | 1 | 100 |
| 2  | 2 | 200 |
+----+---+-----+

执行 UPDATE myTable SET a=a+1, b=a+100; 后
我原本想得到的结果是:
+----+---+-----+
| id | a | b   |
+----+---+-----+
| 1  | 2 | 101 |
| 2  | 3 | 102 |
+----+---+-----+

但实际结果是:
+----+---+-----+
| id | a | b   |
+----+---+-----+
| 1  | 2 | 102 |
| 2  | 3 | 103 |
+----+---+-----+

分析了一下在执行 UPDATE myTable SET a=a+1, b=a+100;  时,此时b=a+100中的a已经是a=a+1的值了,在这点上往往是会被忽略的。尤其是像我这样先学ACCESS,刚转mySQL才1个来月的初学者。因为相同的操作在ACCESS中的结果应该像我原本设想的那样。

知道了着点后解决方法也很简单,把顺序换一下,即 UPDATE myTable SET b=a+100, a=a+1; 这样就能得到我想要的结果了 “)

难怪很都高手对ACCESS都不屑一顾。
的确ACCESS的功能差很多。我印象当中ACCESS是不能把 AS 出来的字段作为 ORDER BY 的依据的。

如果大家在使用中发现还有什么不同或需要注意的地方请贴出来共享啊

是啊,程序都是按顺序执行的
大家一定要注意
如履薄冰

不错.顶一下

不错,顶一下.