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互换表中两列数据方法相关推荐

  1. mysql调换数据_mysql互换表中两列数据方法

    1.创建表及记录用于测试 CREATE TABLE product ( id int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '产品id', name ...

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

    由于最近项目,有这样一个需求,是把数据库中的两列数据互换,经过好久才搞定,这里写个简单实例,做过记录. 1.创建表及记录用于测试 CREATE TABLE `product` ( `id` int(1 ...

  3. mysql数据表中取几列_MySQL实现表中取出随机数据

    MySQL是开放源代码,MySQL因为其速度.可靠性和适应性而备受关注.大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择. 那么如何在MySQL实现表中取出随机数据呢? SEL ...

  4. SQL中union的常用用法~~解决数据拼凑、表中两列合并等问题

    强大的union 和union all的方法,具体可查看强大的W3SCHOOL里的说明 union 博主只知道可以拿来拼数据,在二次开发数据源中,经常在下拉框选项值时,比如 select '是' id ...

  5. 如何排两列的序计算机考试,excel中两列数据怎么一起排序?excel两列同时排序的方法...

    excel中两列数据怎么一起排序?excel两列同时排序的方法 腾讯视频/爱奇艺/优酷/外卖 充值4折起 我们在使用Excel对数列排序时,有时会碰到需要对两列数据同时排序,下面就跟大家详细介绍操作方 ...

  6. mysql 添加字段 描述_mysql新建表 中是否自带描述字段?

    展开全部 可以直接自己添加描述字段. DROP TABLE IF EXISTS `user`; CREATE TABLE user ( idBIGINT(20) UNSIGNED NOT NULL A ...

  7. oracle int相减,求sql语句。得出表中两列相减的值

    1.语句如下: select A, B, A-B as C from 表1 2.计算列: 可以使用同一表中的其他列的表达式计算得来.表达式可以是非计算列的列名.常量.函数,也可以是用一个或多个运算符连 ...

  8. mysql查询唯一单词_MySql从表中获取唯一单词列表,其中字段中的值用逗号分隔

    我不确定这是否可以用纯SQL(MySQL),但无论如何我会问.我有这样一张桌子: ID TAGS ----------------------------- 1 word1,word2,word3 2 ...

  9. mysql两列取小_mysql – 我想获取两列特定列之间的列值

    如果我理解正确,我认为你不能用一个查询来做到这一点.您可以尝试使用以下内容.添加了对代码的评论. SET @schema = 'database_name_here'; -- Database nam ...

最新文章

  1. 【C++】何时需要自定义拷贝构造函数和赋值符
  2. ValueError: Program neato not found in path.
  3. Caddy-基于go的微型serve用来做反向代理和Gateway
  4. Vue使用全局样式,页面没有发生变化:逗号是中文的,引起错误,样式不变化 也没有报错就是不起作用
  5. python不合法的布尔表达式_python测试题
  6. SharePoint2007安装图文详解四:安装.NET Framework 3.0和SharePoint 2007
  7. java jstl foreach用法_JSTL 中c:forEach使用
  8. 微课|玩转Python轻松过二级(1.3节):编码规范与代码优化建议2
  9. Qt4_在Qt设计师中集成自定义窗口部件
  10. Oracle DML封锁机制研究
  11. LeetCode刷题——63. 不同路径 II
  12. 【计算大于这个整数的最小质数】
  13. 我为账户和推广计划指定了不同的推广地域,以哪一个为准?
  14. 【092】召唤神龙-指尖大鱼吃小鱼的魔性游戏
  15. 【NIPS2018】实时联合目标检测与语义分割网络
  16. 租车信息系统数据库设计(1)
  17. RuntimeError: Attempting to deserialize object on CUDA device 3 but torch.cuda.device_count() is 1.
  18. PHPMyWind支持ppt一键导入
  19. 怎么备份VMware虚拟磁盘文件或移植到其他虚拟机
  20. 石子游戏大合集[博弈论]

热门文章

  1. mysql保存plc数据_MySQL空间数据的保存
  2. 预览docx_Windows-快速预览文件-QuickLook
  3. 数据结构实验六 综合数据处理
  4. 数据结构实验四 排序算法的实现
  5. android 7调用摄像头,Android调用摄像头拍照(兼容7.0)
  6. mysql mvcc 隔离级别_关于 Mysql 四种隔离级别中 Lock 和 MVCC 的关系
  7. 【软件开发底层知识修炼】二 深入浅出处理器之二 中断的概念与意义
  8. 模板——树状数组求逆序对
  9. canvas合成图片 圣诞节新技能戴帽
  10. 文字超出两行 则显示。。。