mysql中update一张表多列时的次序问题

mysql有一个不符合SQL标准的地方需注意。

在mysql中,如果在一个update语句中更改了多列的值,这些更改是有次序的,改完了第一列再改第二列,改完第二列再改第三列,依此类推。SQL标准的要求是更改不依赖于次序,所有更改都使用右端表达式在这条update语句之前的值,不会使用update语句执行过程中的值。

mysql文档提供的一个例子是:

UPDATE t1 SET col1 = col1 + 1, col2 = col1;

假如原来col1和col2的值都是1,那么改完后两者的值都是2。如果按照SQL标准,改完后的值应该分别是2和1。

如果该语句写成:

UPDATE t1 SET col2 = col1, col1 = col1 + 1;

那么改完后两者的值分别是2和1。这个结果和SQL标准要求的一致。

所以,在更改多列时,需要注意赋值的次序问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值