千家信息网

mysql怎么互换表中两列数据

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍"mysql怎么互换表中两列数据",在日常操作中,相信很多人在mysql怎么互换表中两列数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"mysql怎么
千家信息网最后更新 2025年11月07日mysql怎么互换表中两列数据

这篇文章主要介绍"mysql怎么互换表中两列数据",在日常操作中,相信很多人在mysql怎么互换表中两列数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"mysql怎么互换表中两列数据"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

解决方案

使用update命令,这完全得益于MySQL SQL命令功能的强大支持。

表格中原来数据类似如下:

select * from product; +----+--------+----------------+--------+| id | name | original_price | price | +----+--------+----------------+--------+| 1 | 雪糕 | 5.00 | 3.50 | | 2 | 鲜花 | 18.00 | 15.00 | | 3 | 甜点 | 25.00 | 12.50 | | 4 | 玩具 | 55.00 | 45.00 || 5 | 钱包 | 285.00 | 195.00 |

现在要求互换original_price与price的值,使用如下方法:

update product as a, product as b set a.original_price=b.price, a.price=b.original_price where a.id=b.id;

验证一下:

select * from product; +----+--------+----------------+--------+| id | name | original_price | price | +----+--------+----------------+--------+| 1 | 雪糕 | 3.50 | 5.00 | | 2 | 鲜花 | 15.00 | 18.00 | | 3 | 甜点 | 12.50 | 25.00 | | 4 | 玩具 | 45.00 | 55.00 || 5 | 钱包 | 195.00 | 285.00 |

扩展问题

上面直接使用update交换一个表中两列(自然是同一数据类型)的例子有一个特殊情况,其实也正是我要解决的真正问题。具体地说,我们的用户在初期准备的部分数据中对于表中的两列数据弄反了。但是,对于以后输入的数据却没有弄反。这种情况下,我们需要找出前面弄反的记录范围,然后针对这部分记录实施上面的操作。但遗憾的是,MySQL中的update语句是不支持limit子句的。官方正规的描述如下:

For the multiple-table syntax, UPDATE updates rows in each table named in table_references that satisfy the conditions. Each matching row is updated once, even if it matches the onditions multiple times. For multiple-table syntax, ORDER BY and LIMIT cannot be used.


我试验了一下,的确如此。

无奈我们只能使用变通的办法。其中一个方法是,先把上面指定范围的记录选择出来并生成到一个临时表中,然后针对原表和这个临时表使用update语句实现交换上面范围记录中各个对应字段值的目的。

但这里有一个小插曲是:MySQL不直接支持类似于MS SQL Server的select into newtable这样的语句。不过,我们可以使用变通的其他语句实现,如下:

Create table tmp(Select * from mv_person2 limit 0,10);

上面语句的含义是,生成一个新表tmp,该表中的字段及值是另一个表mv_person2中从第1到第10条记录数据。这样便实现了上面生成一个临时表之目的。

有了上面的临时表tmp,再使用update语句实现交换表格mv_person2中指定范围(例如从第1到第10条记录数据)两列便轻松了。答案如下:

update mv_person2 as a, tmp as b set a.original_price=b.price, a.price=b.original_price where a.id=b.id;

到此,关于"mysql怎么互换表中两列数据"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

数据 语句 范围 学习 方法 问题 支持 生成 命令 字段 情况 更多 玩具 甜点 目的 表格 钱包 雪糕 面的 鲜花 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 微交易是软件开发 阿坝州网络安全宣传活动 储量数据库可以网发吗 武汉直播软件开发平台 我的世界 服务器端 永劫无间服务器数据互通吗 vmware怎么搭建虚拟服务器 服务器如何开创造 如何设置邮箱服务器 怎么做免费的云服务器 网络安全测试题免费下载 工信部高级软件开发工程师 广西网络安全法 知识题目 数据库开始时间结束时间 三星商用显示器服务器模式 雨花区软件开发大专学校 如何从数据库中阅读论文 热血江湖云服务器挂机哪个好 网络安全主题手抄报三年级上册 深圳服务器系统运维方案多少钱 国内软件开发转对日软件开发 黑龙江服务器电源采购 我的世界网易服务器海岛生存 骑马与砍杀最强的服务器 两台服务器加一个磁盘柜 hax.co.id服务器 国家卫健委网络安全培训会 数据库密码采用什么加密 谷歌服务助手无法连接服务器 四川crm软件开发公司
0