mysql列调换位置_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');
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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)
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
2.互换original_price与price的值
新手可能会使用以下方法进行互换
update product set original_price=price,price=original_price;
1
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
正确的互换方法如下:
update product as a, product as b set a.original_price=b.price, a.price=b.original_price where a.id=b.id;
1
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
mysql列调换位置_mysql互换表中两列数据方法相关推荐
- mysql调换数据_mysql互换表中两列数据方法
1.创建表及记录用于测试 CREATE TABLE product ( id int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '产品id', name ...
- mysql 两列数据互换_mysql 实现互换表中两列数据方法简单实例
由于最近项目,有这样一个需求,是把数据库中的两列数据互换,经过好久才搞定,这里写个简单实例,做过记录. 1.创建表及记录用于测试 CREATE TABLE `product` ( `id` int(1 ...
- mysql数据表中取几列_MySQL实现表中取出随机数据
MySQL是开放源代码,MySQL因为其速度.可靠性和适应性而备受关注.大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择. 那么如何在MySQL实现表中取出随机数据呢? SEL ...
- SQL中union的常用用法~~解决数据拼凑、表中两列合并等问题
强大的union 和union all的方法,具体可查看强大的W3SCHOOL里的说明 union 博主只知道可以拿来拼数据,在二次开发数据源中,经常在下拉框选项值时,比如 select '是' id ...
- 如何排两列的序计算机考试,excel中两列数据怎么一起排序?excel两列同时排序的方法...
excel中两列数据怎么一起排序?excel两列同时排序的方法 腾讯视频/爱奇艺/优酷/外卖 充值4折起 我们在使用Excel对数列排序时,有时会碰到需要对两列数据同时排序,下面就跟大家详细介绍操作方 ...
- mysql 添加字段 描述_mysql新建表 中是否自带描述字段?
展开全部 可以直接自己添加描述字段. DROP TABLE IF EXISTS `user`; CREATE TABLE user ( idBIGINT(20) UNSIGNED NOT NULL A ...
- oracle int相减,求sql语句。得出表中两列相减的值
1.语句如下: select A, B, A-B as C from 表1 2.计算列: 可以使用同一表中的其他列的表达式计算得来.表达式可以是非计算列的列名.常量.函数,也可以是用一个或多个运算符连 ...
- mysql查询唯一单词_MySql从表中获取唯一单词列表,其中字段中的值用逗号分隔
我不确定这是否可以用纯SQL(MySQL),但无论如何我会问.我有这样一张桌子: ID TAGS ----------------------------- 1 word1,word2,word3 2 ...
- mysql两列取小_mysql – 我想获取两列特定列之间的列值
如果我理解正确,我认为你不能用一个查询来做到这一点.您可以尝试使用以下内容.添加了对代码的评论. SET @schema = 'database_name_here'; -- Database nam ...
最新文章
- 【C++】何时需要自定义拷贝构造函数和赋值符
- ValueError: Program neato not found in path.
- Caddy-基于go的微型serve用来做反向代理和Gateway
- Vue使用全局样式,页面没有发生变化:逗号是中文的,引起错误,样式不变化 也没有报错就是不起作用
- python不合法的布尔表达式_python测试题
- SharePoint2007安装图文详解四:安装.NET Framework 3.0和SharePoint 2007
- java jstl foreach用法_JSTL 中c:forEach使用
- 微课|玩转Python轻松过二级(1.3节):编码规范与代码优化建议2
- Qt4_在Qt设计师中集成自定义窗口部件
- Oracle DML封锁机制研究
- LeetCode刷题——63. 不同路径 II
- 【计算大于这个整数的最小质数】
- 我为账户和推广计划指定了不同的推广地域,以哪一个为准?
- 【092】召唤神龙-指尖大鱼吃小鱼的魔性游戏
- 【NIPS2018】实时联合目标检测与语义分割网络
- 租车信息系统数据库设计(1)
- RuntimeError: Attempting to deserialize object on CUDA device 3 but torch.cuda.device_count() is 1.
- PHPMyWind支持ppt一键导入
- 怎么备份VMware虚拟磁盘文件或移植到其他虚拟机
- 石子游戏大合集[博弈论]