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;

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

执行结果:

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)

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

时间: 2016-10-20

mysql 5.7.16 安装配置方法图文教程

结合网上的资料,自己亲自的去安装了一次MySQL,安装版本是win7x64 5.7.16. 在安装过程中出现并解决了如下问题: "mysql 服务无法启动 服务没报告任何错误" 1.下载: 地址:http://dev.mysql.com/downloads/mysql/ 2.安装: ZIP Archive版是免安装的.只要解压就行了.不需要安装.我的放在d盘啦. 3.配置: 也就是my.ini文件的由来. 把my-default.ini这个文件复制一下重命名my.ini,然后替换成如下

64位 win10系统安装绿色版mysql-5.7.16-winx64的教程

本文主要给大家介绍了64位 win10系统安装绿色版mysql-5.7.16-winx64的方法,具体内容如下所示: 1. 下载MySQL Community Server 地址:http://dev.mysql.com/downloads/mysql/ 选择Windows (x86, 64-bit), ZIP Archive进行下载. 2.解压MySQL安装包到指定目录,我的目录为D:\Program Files\MySql\mysql-5.7.16-winx64,并复制一份my-defaul

CentOS 下yum安装mysql、jdk和tomcat的方法

0. 创建个人文件夹 # 使用 yum 安装tomcat 和 mysql # 创建文件夹 cd /usr/local mkdir hehe 1. 安装rzsz # 1. 安装rzsz yum list lrzsz* yum install lrzsz -y 2. 安装JDK,path之类的已经自动设置好了 # 2. 安装JDK yum list java* yum install java-1.7.0-openjdk* -y 3. 安装mysql # 3. 安装mysql yum list my

MySQL数据库21条最佳性能优化经验

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情. 当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库.希望下面的这些优化技巧对你有用. 1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被M

MySQL中interactive_timeout和wait_timeout的区别

在用mysql客户端对数据库进行操作时,打开终端窗口,如果一段时间没有操作,再次操作时,常常会报如下错误: ERROR 2013 (HY000): Lost connection to MySQL server during query ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... 这个报错信息就意味着当前的连接已经断开,需要重新建立连接. 那么,连接的时长是如何确认的?

mysql 5.6.13 免安装版配置方法详解

本文给大家记录在上个项目中涉及到免安装版的mysql的配置问题,今天小编把配置方法分享到我们平台供大家学习. 1. 下载mysql Community Server 5.6.13 2. 解压MySQL压缩包 将以下载的MySQL压缩包解压到自定义目录下,我的解压目录是: "D:\Program Files\MySQL\mysql-5.6.13-win32" 将解压目录下默认文件 my-default.ini 拷贝一份,改名 my.ini 复制下面的配置信息到 my.ini 保存 #如果

ubuntu系统中安装mysql5.6(通过二进制)

一.首先下载解压 wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz mv mysql-5.6.33-linux-glibc2.5-x86_64 /usr/local/mysql 二.创建目录和用户 1.创建mysql目录 mkdir -p /mysql/data ---数据目录 mkdir -p /mysql/log ---日志目录 2.创建用户 groupadd

MySQL与Mongo简单的查询实例代码

首先在这里我就不说关系型数据库与非关系型数据库之间的区别了(百度上有很多)直接切入主题 我想查询的内容是这样的:分数大于0且人名是bob或是jake的总分数 平均分数 最小分数 最大分数 计数 举这个实例来试试用MySQL和mongodb分别写一个查询 首先我们先做一些准备工作 MySQL的数据库结构如下 CREATE TABLE `new_schema`.`demo` ( `id` INT NOT NULL, `person` VARCHAR(45) NOT NULL, `score` VAR

MySQL5.7.16绿色版安装教程详解

下面给大家介绍下MySQL5.7.16绿色版安装教程,具体内容如下所示: 如图所示: 原窗口指令 Microsoft Windows [版本 10.0.xxxxx] (c) 2016 Microsoft Corporation.保留所有权利. C:\WINDOWS\system32>mysqld --initialize-insecure --console 2016-10-16T21:45:48.466872Z 0 [Warning] TIMESTAMP with implicit DEFAU

Mysql 8.0 绿色版安装教程详解

Mysql 8.0 绿色版安装教程,供大家参考,具体内容如下 1.进入官网找到自己所需的安装包:MySQL :: Developer Zone 下载地址:MySQL Community Server 8.0.29 官方免费安装版 软件路径:DOWNLOAD–>MYSQL Community Downloads–>MYSQL on Windows 2.解压zip压缩包至想要安装的目录,比如解压到D:\mysql\mysql-8.0.29-winx64 3.在解压目录D:\mysql-8.0.29

Mysql5.7.11绿色版安装教程图文详解

Mysql5.7.11绿色版安装教程图文详解如下所示: 1.解压mysql-5.7.11压缩包到想要存放的磁盘文件夹中: 2.在文件夹中新建一个data文件夹和新建一个my.ini文件,并配置my.ini文件 my.ini文件内容:关键点为配置Mysql文件夹中的data目录及存储根目录 3.在我的电脑--属性--高级系统设置--环境变量--配置path变量: 变量值为: 4.使用管理员身份打开cmd.exe程序 注意:如果未使用管理员身份打开的cmd.exe,在mysql安装过程中会出现 --

MongoDB windows解压缩版安装教程详解

创建目录如下 将mongodb的压缩包解压到mongodb目录下 mongodata下创建data目录存放数据:创建log目录存放目录 cmd 输入命令: D:\mongo\mongodb\bin\mongod.exe --dbpath "D:\mongo\mongodata\data" --logpath "D:\mongo\mongodata\log\MongoDB.log" --install --serviceName "mongo" -

MySQL5.6的zip包安装教程详解

之前我们都是后缀为.msi的文件,换言之就是傻瓜式安装,但是有些版本不容易控制安装路径,或者数据库编码格式,还有些会安装很多无用的服务,但是都没有后缀为.zip文件简单直接,说是在哪里,就在哪里. 1,首先在官网下载一个合适的mysql版本,有msi文件,也有zip文件的,先前是下载了两个一个是5.7.24但是里面缺少一个文件夹:data,还缺少文件:my-default.ini文件,后来下载了5.6.42的zip压缩包,里面就什么都有了 2,把你下载的zip解压到合适的文件夹下面,会发现没有m

mysql5.7.19 解压版安装教程详解(附送纯净破解中文版SQLYog)

Mysql5.7.19版本是今年新推出的版本,最近几个版本的MySQL都不再是安装版,都是解压版了,这就给同志们带来了很多麻烦,挖了很多坑,单单从用户使用的易用性来讲,这么做着实有点反人类啊! 笔者也是反反复复的折腾了快一个小时才成功搞定,过程中也网搜了很多的教程,可惜很多也都是,索性自己记录一下,免得下次再重复入坑. 另: MySQL的图形化工具有很多种,笔者自我感觉SQLYog比较好用,纯属个人感觉,不喜勿喷!附送破解版SQLYog. 笔者使用环境: win10 x64 1. 下载安装包 访

MySQL5.6.22 绿色版 安装详细教程(图解)

1.数据库下载 从官方网站可以找到两种文件包,一种是exe安装程序,另一种是zip压缩包. 本人喜欢清爽的方式,所以下载的是ZIP压缩包.最新的5.6.22大概350M,下载还需要oracle帐号,自己注册一个好了. 2.数据库安装 解压出下载的文件mysql-5.6.22-win32.zip(有x86和x64两个版本)到任一目录,防止出现未知问题,最好放在非系统盘的非中文目录下,我的位置E:\mysql\mysql-5.6.24-win32.打开文件夹复制一份my-default.ini为my

Winserver2012下mysql 5.7解压版(zip)配置安装教程详解

一.安装 1.下载mysql zip版本mysql不需要运行可执行文件,解压即可,下载zip版本mysql msi版本mysql双击文件即可安装,相对简单,本文不介绍此版本安装 2.配置环境变量 打开环境变量配置页面(winserver服务器环境变量位置:服务器管理器->本地服务器->计算机名称->高级->环境变量),在系统变量path后面添加mysql bin文件路径,例如:;C:\mysql-5.7.17-winx64\bin 3.配置mysql mysql配置文件my-def

Mysql免安装版设置密码教程详解

方法1: 用SET PASSWORD命令 MySQL -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); 方法2:用mysqladmin mysqladmin -u root password "newpass" 如果root已经设置过密码,采用如下方法 mysqladmin -u root password oldpass "newpass" 方法3: 用UPDA

Centos7 下Mysql5.7.19安装教程详解

1.下载 从官网下载mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz,版本为5.7.19 下载地址: https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-linux-glibc2.12-x86_64.tar.gzLinux 2.创建mysql用户组及用户 l  创建mysql用户组 #groupadd mysql l  在mysql用户组下创建mysql用户 #useradd mysql -g