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

相关推荐

  • 数据库自学笔记(1)-

    数据库自学笔记(1)-最近在自学看 数据库系统概论 这本书,总结一下遇到的问题。 1.广义笛卡尔积(Extende cartesian product): 属于 关系代数 里面的 传统的集合运算。其他的为union,exc

    2023-01-23
    109
  • 数据库分库分表思路「建议收藏」

    数据库分库分表思路「建议收藏」一. 数据切分 关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下…

    2023-02-02
    94
  • 工作流加签是什么意思_流程团队

    工作流加签是什么意思_流程团队工作流引擎会签, 概要说明 关键字: ccflow 工作流引擎 会签,加签,主持人,多人处理规则 会签定义:会签就是多人在一个节点上表达意见,每个人只能在一个节点上填写一个意见。 我们提供两种模式的…

    2023-04-12
    108
  • Python Tkinter Radiobuttons: 界面选项的交互性控制

    Python Tkinter Radiobuttons: 界面选项的交互性控制Radiobuttons 是Tkinter库中的一个可用控件,用于创建多个互斥的选项。每个选项是一个圆形按钮,用户只能选择其中的一个选项。Radiobuttons控件非常有用,可以用来设计交互性很强的用户界面。

    2024-03-09
    35
  • Excel技巧—一个公式实现中英文翻译「建议收藏」

    Excel技巧—一个公式实现中英文翻译「建议收藏」接着上一章用Excel实现汉字转拼音,不禁让小编想到那是否可以用Excel实现中英文翻译呢?毕竟现在中国发展越来越快,和国际间交流越来越多,可能有些人的领导就是外国人,那这个时候拿着一堆中文的Exce

    2023-03-02
    100
  • 优化数字精度,求取以10为底的对数

    优化数字精度,求取以10为底的对数
            在数学中,以10为底的对数又称为常用对数,通常用“lg”表示。在计算机中求解常用对数时,需利用逼近法与级数展开法等数学工具,得到较高精度的近似值。求解常用对数的公式stronglg(x) = log10(x)/strong,其中,x > 0 ,为实数。

    2023-12-11
    59
  • Python编程实例:用Python解析数据

    Python编程实例:用Python解析数据数据解析是指将一些结构化或半结构化数据从一种形式转换为另一种形式的过程。其中结构化数据与半结构化数据是指具有非常明显固定格式的数据,例如XML、JSON等;而非结构化数据则是指不具有固定格式的数据,例如文本、图片等。

    2024-03-25
    27
  • sql中like的用法_sql数据库like怎么用

    sql中like的用法_sql数据库like怎么用目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 前面介绍的所有操作符都是针对已知值进行过滤的。不管是匹配一个值还是多个值,检验大于还是小于已知值,或者检查某个范围的值,其共同点是过滤中使用的

    2023-04-19
    124

发表回复

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