在 MySQL 中交换两列值?

mysqlmysqli database

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

  • 添加两个值并将它们存储到第一列中

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

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

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

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

现在我们将应用上述规则来交换两列值。

创建表。

mysql> create table SwappingTwoColumnsValueDemo
   -> (
   -> FirstColumnValue int,
   -> SecondColumnValue int
   -> );
Query OK, 0 rows affected (0.49 sec)

插入一些记录。

mysql>  insert into SwappingTwoColumnsValueDemo values(10,20),(30,40),(50,60),(70,80),(90,100);
Query OK, 5 rows affected (0.19 sec)
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;
Query OK, 5 rows affected (0.15 sec)
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)

相关文章