mysql互换表中两列数据方法「建议收藏」

mysql互换表中两列数据方法「建议收藏」1.创建表及记录用于测试 CREATE TABLE ( int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '产品id', varchar

mysql互换表中两列数据方法

1.创建表及记录用于测试

CREATE TABLE product (
id int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT “产品id”,
name varchar(50) NOT NULL COMMENT “产品名称”,
original_price decimal(5,2) unsigned NOT NULL COMMENT “原价”,
price decimal(5,2) unsigned NOT NULL COMMENT “现价”,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO product (id, name, original_price, price) VALUES
(NULL, “雪糕”, “5”, “3.5”),
(NULL, “鲜花”, “18”, “15”),
(NULL, “甜点”, “25”, “12.5”),
(NULL, “玩具”, “55”, “45”),
(NULL, “钱包”, “285”, “195”);

mysql> 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 |
+----+--------+----------------+--------+
5 rows in set (0.00 sec)

代码100分

2.互换original_price与price的值

新手可能会使用以下方法进行互换

代码100分update product set original_price=price,price=original_price;

但这样执行的结果只会使original_price与price的值都是price的值,因为update有顺序的,
先执行original_price=price , original_price的值已经更新为price,
然后执行price=original_price,这里相当于没有更新。

执行结果

mysql> 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 |
+----+--------+----------------+--------+
5 rows in set (0.00 sec)

mysql> update product set original_price=price,price=original_price;
Query OK, 5 rows affected (0.00 sec)
Rows matched: 5  Changed: 5  Warnings: 0

mysql> select * from product;
+----+--------+----------------+--------+
| id | name   | original_price | price  |
+----+--------+----------------+--------+
|  1 | 雪糕   |           3.50 |   3.50 |
|  2 | 鲜花   |          15.00 |  15.00 |
|  3 | 甜点   |          12.50 |  12.50 |
|  4 | 玩具   |          45.00 |  45.00 |
|  5 | 钱包   |         195.00 | 195.00 |
+----+--------+----------------+--------+
5 rows in set (0.00 sec)

正确的互换方法如下:

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

执行结果:

代码100分mysql> 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 |
+----+--------+----------------+--------+
5 rows in set (0.00 sec)

mysql> update product as a, product as b set a.original_price=b.price, a.price=b.original_price where a.id=b.id;
Query OK, 5 rows affected (0.01 sec)
Rows matched: 5  Changed: 5  Warnings: 0

mysql> 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 |
+----+--------+----------------+--------+
5 rows in set (0.00 sec)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10137.html

(0)
上一篇 2023-01-24
下一篇 2023-01-25

相关推荐

  • 用 Python 制作游戏脚本

    用 Python 制作游戏脚本在今天的游戏市场中,游戏制作已经不再是只能由程序员和设计师来完成了。现在,越来越多的人开始使用Python编写游戏脚本。Python作为一种高级编程语言,具有很多强大的功能,包括易于学习、简洁的语法和适用于各种平台。这篇文章将介绍如何使用Python编写游戏脚本,并提供一些参考性代码示例。

    2024-05-07
    59
  • MySQL原理 – InnoDB引擎 – 行记录存储 – Redundant行格式[亲测有效]

    MySQL原理 – InnoDB引擎 – 行记录存储 – Redundant行格式[亲测有效]本文基于 MySQL 8 在上一篇:MySQL原理 – InnoDB引擎 – 行记录存储 – Compact格式 中,我们介绍了什么是 InnoDB 行记录存储以及 Compact 行格式,在这一篇…

    2023-03-19
    145
  • 如何更新pip版本

    如何更新pip版本pip是Python的官方包管理工具,它可以帮助用户安装、卸载和更新Python库。在这篇文章中,我将讨论几个问题,例如:如何更新pip版本、pip更新命令、如何更新pip的版本、从pip更新Python版本、Anaconda更新pip版本、cmd怎么更新pip版本、更新pip版本失败以及pip更新库指定版本等问题。

    2024-08-05
    30
  • 利用Python的While循环实现迭代过程

    利用Python的While循环实现迭代过程在Python中,利用while循环可以轻松实现基本的数值迭代过程。例如,我们可以编写以下代码,循环输出1到10之间的所有整数:

    2023-12-14
    98
  • mysql zip 安装「建议收藏」

    mysql zip 安装「建议收藏」越来越喜欢绿色免安装的产品了,mysql也不例外,由其是mysql 8,于是就重点研究了下如何安装zip版的mysql。 安装脚本 以下是参考网上其它资料整理后的批处理文件,直接放在mysql解压出…

    2023-02-12
    154
  • MYSQL架构篇

    MYSQL架构篇目标: 掌握Mysql的各组件及各组件的功能 理解Mysql简版执行流程和详细执行流程 掌握MyIsam和InnoDB的区别并说明使用场景 掌握Mysql日志文件及主要日志文件的作用 理解Mysql…

    2023-04-06
    167
  • “我的 TiDB 听我的”第二季来袭——TiDB 5.0 需求全面征集[亲测有效]

    “我的 TiDB 听我的”第二季来袭——TiDB 5.0 需求全面征集[亲测有效]2019 年底,TUG 联合 TiDB 开发者社区举办了“ 我的 TiDB 听我的 ”活动,旨在听取来自 TiDB 使用者的真实呼声,并将收集到的宝贵需求融入到 TiDB 的灵魂和设计中,帮助 Ti…

    2023-03-06
    140
  • java大数据最全课程学习笔记(4)-

    java大数据最全课程学习笔记(4)-目前CSDN,博客园,简书同步发表中,更多精彩欢迎访问我的gitee pages HDFS NN,2NN,DN及HDFS2.x新特性 NameNode和SecondaryNameNode(重点) NN

    2023-03-22
    128

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注