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

相关推荐
李迟几秒前
Golang实践录:使用sqlx操作sqlite3数据库
数据库·golang·sqlite
小Mie不吃饭18 分钟前
Oracle - 闪回技术及生产实践
数据库·oracle
爱丽_22 分钟前
MyBatis事务管理与缓存机制详解
数据库·缓存·mybatis
Filotimo_24 分钟前
EntityGraph的概念
java·开发语言·数据库·oracle
tianyuanwo41 分钟前
RPM debugsource包的底层原理:深入解析rpmbuild 4.14中的调试源码打包机制
数据库·rpmbuild·debugsource
就叫飞六吧1 小时前
mysql表字段反查表名脚本-筛选法-查表技巧
数据库·mysql
1.14(java)1 小时前
MySQL数据库操作全攻略
java·数据库·mysql
jmxwzy1 小时前
MySQL
数据库·mysql
sunnyday04262 小时前
Spring Boot 项目中使用 Dynamic Datasource 实现多数据源管理
android·spring boot·后端
自己的九又四分之三站台2 小时前
PostgreSQL:万物皆可PostgreSQL的力量
数据库·postgresql