关于Mybatis中update语句更新表中数据的流程!(有问题没有搞清楚)

   今天在写公司API接口时遇到Mybatis中实现交换监控点顺序时具体该怎么使用update,由此想到update语句执行流程是怎样?

 1.更新一个表中的一列

        例如:update 表A 

                    set B=C 

                    where  id=100(过滤条件)

    此时执行顺序时由上到下,先定位到表A,然后找到列B设定值为A,最后通过过滤条件确定下要更新id值为100的行。

2.更新表中两列数据。

        例如:update 表A

                      set 列1=B,列2=C

                       where  id=100(过滤条件)

    此时执行顺序为由上到下,由左到右。首先定位到表A,然后定位到列1设定值为B,列2设定值为C,最后通过过滤条件确定下要更新id值为100的行。

3.同时更新同一张表两次

    实现方法如下图所示,这里是通过上传两个不同的id定位到两行,然后交换两行中某两列的数据,从而达到交换监控点顺序的目的。

 


(1):这里的update data_point p , data_point o的目的是将表data_point 分别以p、o代替从而达到两次更新表data_point的目的。

(2):设定p的sortId列值为srcSortId,o的sortId列值为dstSortId,达到交换的目的。(这里p的sortId值是dstStreamUid行对应的sortId列所对应的值;o的sortId值是srcStreamUid行对应的sortId列所对应的值

(3):通过上传的dstStreamUId和srcStreamUid筛选两行。

问题:当我将过滤条件里 and 关键字改为 or 时,整个表的SortId列值全部变为上传的235(上传的dstSortId值,如图)。那么此时的执行顺序什么呢???

       我是这样想的,当执行到set这一步时,p、o两个表的sortId列的数据全部变为各自上传的sortId值,当过滤条件使用or时只需满足其中之一就行,当前面的条件满足时,后面的条件就不执行了(这里只执行了p.streamUid=#{dstStreamUid}这个条件)。以至于造成sortId值全部变为对应srcStreamUid。

        但是当我修改条件的顺序时结果依然同上,然后猜测是字母p、o在字母表中顺序造成的,所以更换为p、q再去反复调整顺序,但是结果依然不变。还是没有找到根本原因。打算在后续学习中搞清楚真正的原因。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值