博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UPDATE语句中SET部分列赋值的先后顺序有影响么?
阅读量:5795 次
发布时间:2019-06-18

本文共 701 字,大约阅读时间需要 2 分钟。

昨天研发同事问我个问题,UPDATE语句中SET部分列赋值的先后顺序会影响结果么?以前没考虑过这个问题,因为通常我们都会UPDATE时给列赋予一个确定的值,而不是一个依赖于其他列的值。

测试环境:

DROP TABLE TB1001;CREATE TABLE TB1001(    ID INT PRIMARY KEY,    C1 INT,    C2 INT);INSERT INTO TB1001        ( ID, C1, C2 )SELECT 1,1,1UNIONSELECT 2,1,1;

更新语句为:

UPDATE  TB1001SET C2=CASE WHEN C1=1 THEN 11 ELSE 22 END,C1=2WHERE ID=1;UPDATE  TB1001SET C1=2,C2=CASE WHEN C1=1 THEN 11 ELSE 22 ENDWHERE ID=2;

首先在SQL Server 2012上进行,更新后数据为:

在MySQL 5.6.26上运行,更新后的数据为:

 

测试结论:

在SQL Server 2012中,UPDATE 语句SET部分列顺序不会影响最终结果;

在MySQL 5.6版本中,UPDATE 语句SET部分列顺序会影响最终结果;

因此建议研发同志,为提高程序的“兼容性”,避免在MySQL和SQL Server之间迁移时遇到问题,应尽可能保证代码简单粗暴,尽可能将一些“逻辑”拆出来,比如在由程序来计算列“最终”的更新值,即可完全避免以上困惑和踩坑。

 

=======================================

 

转载地址:http://yhffx.baihongyu.com/

你可能感兴趣的文章
javascript实现-------------选择排序
查看>>
成功复活 Casio PB-300 的打印模块
查看>>
讲真:序列化必读
查看>>
centOS中VMware Tools 安装
查看>>
oracle中以dba_、user_、v$_、all_、session_、index_开头的常...
查看>>
leetcode 116- Populating Next Right Pointers in Each Node
查看>>
递推练习 简单n!
查看>>
spring项目启动错误——java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext...
查看>>
Android中解析XML
查看>>
关于 visual studio 扩展与更新 搜索不到qt的解决方案
查看>>
iOS开发网络篇—GET请求和POST请求
查看>>
字典dict
查看>>
游戏名词解释
查看>>
mongodb数据的导出和导入
查看>>
白话算法(7) 生成全排列的几种思路(二) 康托展开
查看>>
d3 v4实现饼状图,折线标注
查看>>
微软的云策略
查看>>
SQL server中 常用系统函数 可以学习下
查看>>
剑指offer---06---数组,二分法---旋转数组的最小数字
查看>>
Valid Parentheses
查看>>