mysql如何交换两列的值

sql 复制代码
    create table test.student(
	id int(11) auto_increment primary key,
	name varchar(255),
	des  varchar(255)
)

insert into test.student(name,des) values
('desc1','name1'),
('desc2','name2'),
('desc3','name3'),
('desc4','name4'),
('desc5','name5'),
('desc6','name6'),
('desc7','name7'),
('desc8','name8'),
('desc9','name9')

select * from test.student;

如上图所示name和des两列数据错位了。如何修复了。

最开始的想法

update test.student set name=des ,des=name

发现结果 好像是先把des赋值给name了,然后再执行set des=name所以数据不对。

如何解决呢?我看到网上有几种方法

1.多加一列 比如add column tmp , set tmp=des,des=name,name=tmp

2.使用一个临时表 具体也没看。

我才用另外一种方法

update test.student t1 inner join test.student t2 on t1.id=t2.id set t1.name=t2.name ,t1.des=t2.des

简单的一个思路,唯一注意的是要注意on的关联条件,使用主键关联

相关推荐
00后程序员张2 分钟前
iOS 26 内存占用监控 多工具协同下的性能稳定性分析实战
android·macos·ios·小程序·uni-app·cocoa·iphone
奔跑中的蜗牛66613 分钟前
一次崩溃率暴涨 10 倍的线上事故:从“无堆栈”到精准定位,到光速解决
android
Digitally17 分钟前
7 种方法:如何将视频从电脑传输到安卓手机
android·电脑·音视频
叶羽西27 分钟前
Android15 Camera系统调试操作
android
雨夜赶路人28 分钟前
SQL -- GROUP BY 基本语法
数据库·sql
用户693717500138438 分钟前
彻底搞懂api和testImplementation的区别
android
用户693717500138438 分钟前
Android闪退数据处理必备:8个优质开源项目推荐
android
用户693717500138439 分钟前
Android崩溃前关键数据拯救:从原理到落地的完整方案
android
cr7xin43 分钟前
缓存查询逻辑及问题解决
数据库·redis·后端·缓存·go
杜子不疼.44 分钟前
【Rust】异步处理器(Handler)实现:从 Future 本质到 axum 实战
android·开发语言·rust