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

相关推荐
Android-Flutter4 小时前
Compose 管理状态 详解
android·compose
昵称画4 小时前
交接班记录电子化:三班之间的信息不漏
开发语言·数据库·人工智能·低代码·php
缓慢更新5 小时前
审批的加签与会签:多人意见怎么合
android·java·数据库·低代码·rxjava
跨境联盟5 小时前
大健康实体如何搭建产品差异化:对比普通营养品与合规跨境膳食补充剂服务模式
数据库·ai·健康医疗·健康管理·精准营养
我怀里的猫5 小时前
android-activity-launch-sequence
android
有想法的py工程师5 小时前
PostgreSQL EXPLAIN中的Cost模型分析(random_page_cost参数):优化器眼中的代价世界与执行计划生成
数据库·postgresql
前进的李工6 小时前
飞书企业知识库设计+后端高频八股
数据库·redis·后端·mysql·性能优化·飞书·rag
泡海椒6 小时前
JQuick-SQL CSV 文件数据接入:转换为内存表后再查询
数据库·sql
YB13757 小时前
Jetpack Compose 动画rememberInfiniteTransition
android
为思念酝酿的痛8 小时前
MySQL数据类型
数据库·mysql