Computer >> Máy Tính >  >> Lập trình >> MySQL

Trao đổi hai giá trị cột trong MySQL?

Để hoán đổi hai cột, chúng ta có thể áp dụng logic hoán đổi bên dưới.

  • Thêm cả hai giá trị và lưu trữ chúng vào cột đầu tiên

  • Trừ giá trị của cột đầu tiên với giá trị thứ hai và lưu trữ giá trị đó vào cột thứ hai.

  • Trừ giá trị của cột đầu tiên khỏi cột thứ hai được cập nhật và lưu trữ giá trị đó vào cột đầu tiên.

Cấu trúc quy tắc trên như sau. Giả sử, cột đầu tiên là a và cột thứ hai là b.

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

Bây giờ chúng ta sẽ áp dụng quy tắc trên để hoán đổi hai giá trị cột.

Tạo bảng.

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

Chèn một số bản ghi.

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

Để kiểm tra các giá trị cột trước khi hoán đổi.

mysql> select *from SwappingTwoColumnsValueDemo;

Sau đây là kết quả.

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

Cú pháp hoán đổi giá trị cột.

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

Để kiểm tra xem các giá trị cột đã được hoán đổi hay chưa.

mysql> select *from SwappingTwoColumnsValueDemo;

Sau đây là kết quả.

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