前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >MySQL中的一个update的case

MySQL中的一个update的case

原创
作者头像
保持热爱奔赴山海
发布2025-02-12 17:11:22
发布2025-02-12 17:11:22
590
举报
文章被收录于专栏:数据库相关数据库相关

官方文档 https://dev.mysql.com/doc/refman/8.0/en/ansi-diff-update.html

代码语言:sql
复制
create database db2;
use db2;
create table t1(id int , col1 int , col2 int);
insert into t1 select 1,11,22;
insert into t1 select 2,12,33;

select * from t1;
+------+------+------+
| id   | col1 | col2 |
+------+------+------+
|    1 |   11 |   22 |
|    2 |   12 |   33 |
+------+------+------+
2 rows in set (0.00 sec)


执行下面的这个update语句
UPDATE t1 SET col1 = col1 + 1, col2 = col1;

请问最新的col1和col2数值是多少?
答案1:
1 11 11
2 12 12
答案2:
1 12 12
2 13 13


正确答案:
select * from t1; 
+------+------+------+
| id   | col1 | col2 |
+------+------+------+
|    1 |   12 |   12 |
|    2 |   13 |   13 |
+------+------+------+
2 rows in set (0.01 sec)

原因官方文档上写的很详细。

如果在表达式中访问要更新的表中的列,则UPDATE使用该列的当前值。以下语句中的第二个赋值将col2设置为当前(更新的)col1值,而不是原始col1值。结果是col1和col2具有相同的值。这种行为不同于标准SQL。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档