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

相关推荐
雨中飘荡的记忆17 分钟前
SpringAI_Redis向量库实战
数据库·redis·缓存
姓蔡小朋友22 分钟前
Redis网络I/O模型
网络·数据库·redis
数据库学啊1 小时前
专业的国产时序数据库哪个好
数据库·时序数据库
a3158238061 小时前
Android Framework开发知识点整理
android·java·linux·服务器·framework·android源码开发
爱吃面条的猿1 小时前
MySQL 随机日期/时间生成
数据库·mysql
2501_939909052 小时前
Mysql 主从复制、读写分离
数据库·mysql
k***82512 小时前
图文详述:MySQL的下载、安装、配置、使用
android·mysql·adb
潇湘秦2 小时前
ORACLE_PDB_SID和ORACLE_SID的区别
数据库·oracle
0***86332 小时前
SQL Server2019安装步骤+使用+解决部分报错+卸载(超详细 附下载链接)
javascript·数据库·ui
wstcl2 小时前
通过EF Core将Sql server数据表移植到MySql
数据库·mysql·sql server·efcore