在MySQL中交换两个列值?

要交换两列,我们可以应用以下交换逻辑。

  • 将两个值相加并将其存储到第一列

  • 从第二列中减去第一列的值,并将其存储到第二列中。

  • 从更新的第二列中减去第一列的值,并将其存储到第一列中。

上述规则结构如下。假设第一列是a,第二列是b。

1. a = a+b;
2. b = a-b;
3. a = a-b;

现在,我们将应用上述规则以交换两个列的值。

创建一个表。

mysql> create table SwappingTwoColumnsValueDemo
   -> (
   -> FirstColumnValue int,
   -> SecondColumnValue int
   -> );

插入一些记录。

mysql>  insert into SwappingTwoColumnsValueDemo values(10,20),(30,40),(50,60),(70,80),(90,100);
Records: 5  Duplicates: 0  Warnings: 0

交换之前检查列值。

mysql> select *from SwappingTwoColumnsValueDemo;

以下是输出。

+------------------+-------------------+
| FirstColumnValue | SecondColumnValue |
+------------------+-------------------+
|               10 |                20 |
|               30 |                40 |
|               50 |                60 |
|               70 |                80 |
|               90 |               100 |
+------------------+-------------------+
5 rows in set (0.00 sec)

交换列值的语法。

mysql> UPDATE SwappingTwoColumnsValueDemo
   -> SET FirstColumnValue = FirstColumnValue+SecondColumnValue,
   -> SecondColumnValue = FirstColumnValue-SecondColumnValue,
   -> FirstColumnValue = FirstColumnValue-SecondColumnValue;
Rows matched: 5  Changed: 5  Warnings: 0

检查列值是否已交换。

mysql> select *from SwappingTwoColumnsValueDemo;

以下是输出。

+------------------+-------------------+
| FirstColumnValue | SecondColumnValue |
+------------------+-------------------+
|               20 |                10 |
|               40 |                30 |
|               60 |                50 |
|               80 |                70 |
|              100 |                90 |
+------------------+-------------------+
5 rows in set (0.00 sec)