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的关联条件,使用主键关联

相关推荐
头疼的程序员2 分钟前
MySQL学习之触发器
学习·mysql
运维行者_5 分钟前
Azure数据库监控:如何在2025年选择合适的工具
运维·服务器·网络·数据库·flask·自动化·azure
小镇学者3 小时前
【PHP】导入excel 报错Trying to access array offset on value of type int
android·php·excel
卜及中5 小时前
【Redis/1-前置知识】分布式系统概论:架构、数据库与微服务
数据库·redis·架构
一笑的小酒馆6 小时前
Android11 Launcher3去掉抽屉改为单层
android
奈斯ing6 小时前
【prometheus+Grafana篇】基于Prometheus+Grafana实现Redis数据库的监控与可视化
数据库·redis·缓存·grafana·prometheus
在未来等你6 小时前
SQL进阶之旅 Day 23:事务隔离级别与性能优化
sql·mysql·postgresql·高并发·数据一致性·数据库优化·事务隔离
ningmengjing_6 小时前
数据库——MongoDB
数据库·mongodb