`
erichi101
  • 浏览: 11211 次
文章分类
社区版块
存档分类
最新评论

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)

 

2.互换original_price与price的值

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

 

update product set original_price=price,price=original_price;

1

但这样执行的结果只会使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;

1

执行结果:

 

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)

 

where后面所加的条件必须要能唯一的确定要更改表的每一行,最好是者张表的的主键,格式为:a.primary key=b.primary key

 

zz:https://blog.csdn.net/fdipzone/article/details/50864196

分享到:
评论

相关推荐

    MySql读写Xml两种方式性能比较

    本篇文章将详细探讨MySQL中利用存储过程读取和写入XML数据的两种方法,主要关注使用`ExtractValue`函数的性能表现。 1. **XML在MySQL中的基础** XML(Extensible Markup Language)是一种用于描述数据的语言,广泛...

    spring-mybatis-mysql-json

    在这个"spring-mybatis-mysql-json"项目中,我们探讨了如何在MySQL数据库中使用JSON列,同时结合了MyBatis持久层框架以及Spring和Struts2(SSH)的经典MVC架构。下面我们将详细解析这些关键知识点。 首先,MySQL的...

    MySql 4.1 & 5.1 参考手册

    7. **XML支持**:MySQL 5.1 开始支持XML数据类型和XML函数,方便数据交换和处理。 8. **分区的视图**:视图可以应用于分区表,提供更高级别的抽象和数据访问控制。 这两个版本的MySQL都在安全性、性能和功能方面...

    java-excel-mysql互倒代码

    本项目"java-excel-mysql互倒代码"提供了一个实用的解决方案,利用了两个流行的Java库:jxl和Apache POI。 jxl是一个专门用于读写Microsoft Excel文件的Java库,而Apache POI是更广泛的支持Microsoft Office格式的...

    php+mysql练习

    总之,"php+mysql练习"这个项目对于初学者来说是一个很好的起点,通过实践可以加深对这两种技术的理解,同时也能锻炼解决问题和持续学习的能力。在学习过程中,不断尝试、调试和改进,逐步成长为一名熟练的Web开发者...

    excel_to_mysql.rar_excel mysql_excel to mysql php_mysql to exce

    在IT领域,数据管理和处理是至关重要的任务,而Excel和MySQL是两个常用的数据管理工具。Excel是一款强大的电子表格软件,适合处理小型数据集,而MySQL则是一个高效的关系型数据库管理系统,适用于存储和处理大量结构...

    MySQL数据库.pdf

    MySQL软件提供两个版本:社区版和商业版。社区版是免费的开源版本,广泛适用于学习和开发;商业版则是在此基础上增加了技术支持和附加功能。 在安装和配置方面,MySQL的默认端口是3306,用户为root,而默认字符集...

    mysql数据库客户端

    4. **数据导入导出**:Navicat可以帮助用户将数据从各种格式(如CSV、XML、Excel等)导入到MySQL数据库,也可以将数据库数据导出为这些格式,便于数据交换和备份。 5. **数据同步和比较**:此功能允许用户比较两个...

    mysql关联查询

    右关联的语法类似,只是交换了 `LEFT JOIN` 和 `table1` 与 `table2` 的位置: ```sql SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column = table2.column; ``` 4. **全外连接(FULL ...

    Import csv to mysql

    CSV是一种通用的数据交换格式,它以纯文本形式存储表格数据,每行代表一个记录,列之间用逗号分隔。这种格式易于阅读和编写,并且可以用各种程序打开,包括电子表格软件和数据库管理系统。 MySQL是一个流行的开源...

    mysql 实现互换表中两列数据方法简单实例

    在数据库管理过程中,有时我们可能需要对表中的数据进行调整,比如互换两个列的值。这在实际业务场景中是非常常见的需求之一。本文将通过一个具体的MySQL示例来介绍如何在MySQL数据库中实现这一操作。 #### 创建...

    hive-1.1.0-cdh5.14.2.tar.gz和mysql-connector-java-5.1.38.jar连接包

    5. **JDBC连接**: JDBC(Java Database Connectivity)是Java访问数据库的标准API,`mysql-connector-java-5.1.38.jar`是MySQL的JDBC驱动,它使得Hive可以通过JDBC接口与MySQL建立连接,实现数据交换。 6. **Hive与...

    基于MySQL空间扩展的GIS开发技术研究.pdf

    同时,MySQL提供了一系列函数,如`ST_GeomFromText`用于创建几何对象,`ST_Contains`用于判断一个几何对象是否包含另一个,以及`ST_Distance`用于计算两个几何对象之间的距离等,极大地丰富了对空间数据的操作能力。...

    SqlServer Mysql数据库修改自增列的值及相应问题的解决方案

    当需要交换两个自增列的值时,可以分三步进行: - 将值为较小的自增值设为一个临时值(如0)。 - 将值为较大的自增值设为较小的值。 - 最后,将临时值设为较大的值。 ```sql -- 假设表identity_datatable有...

    Navicat for MySQL Mac版

    4. 数据导入/导出:Navicat提供了数据迁移工具,可以从不同格式(如CSV、Excel、XML等)导入数据到MySQL,同时也支持将数据库数据导出为各种格式,方便数据交换。 5. 数据同步:Navicat的数据库同步功能可以比较并...

    PHP+Mysql导入或导出Excel文件

    在IT行业中,PHP和MySQL是两个非常重要的工具,它们分别用于服务器端的脚本和数据库管理。当需要处理大量数据时,Excel文件由于其强大的表格管理和数据分析能力,常常被用作中间格式。本文将深入探讨如何使用PHP和...

    javabin 、mysql的简单应用

    JavaBin和MySQL是两种在IT领域中经常使用的工具,它们分别代表了数据序列化和数据库管理的重要方面。本文将深入探讨这两个技术以及如何在实际应用中结合使用它们,特别是涉及数据库连接、数据操作以及Java Bean数据...

    mysql-存储分区-实验八.docx

    - 交换分区是分区管理的重要操作,有助于数据的迁移和维护。 6. **教师评阅**: 教师可能对实验的完成度、理解和应用进行了评估,强调理论知识与实践操作相结合的重要性。 通过这次实验,不仅掌握了MySQL存储...

Global site tag (gtag.js) - Google Analytics