Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

กำหนด ID ต่างกันตามเงื่อนไขด้วยคิวรี่ MySQL เดียว

ใช้คำสั่ง CASE ภายใน UPDATE เพื่อกำหนดค่า ID ใหม่ตามชื่อ:

mysql> CREATE TABLE DemoTable1545 (
    -> Id INT,
    -> FirstName VARCHAR(20)
    -> );
Query OK, 0 rows affected (1.65 sec)
mysql> INSERT INTO DemoTable1545 VALUES(1, 'John');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable1545 VALUES(2, 'Chris');
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO DemoTable1545 VALUES(3, 'Bob');
Query OK, 1 row affected (0.15 sec)
mysql> SELECT * FROM DemoTable1545;
+------+-----------+
| Id   | FirstName |
+------+-----------+
|    1 | John      |
|    2 | Chris     |
|    3 | Bob       |
+------+-----------+
3 rows in set (0.00 sec)

อัปเดต ID ตามเงื่อนไขชื่อ:

mysql> UPDATE DemoTable1545
    -> SET Id = CASE
    ->   WHEN FirstName LIKE '%John%' THEN 101
    ->   WHEN FirstName LIKE '%Chris%' THEN 201
    ->   WHEN FirstName LIKE '%Bob%' THEN 501
    ->   ELSE Id
    -> END;
Query OK, 3 rows affected (0.18 sec)
mysql> SELECT * FROM DemoTable1545;
+------+-----------+
| Id   | FirstName |
+------+-----------+
|  101 | John      |
|  201 | Chris     |
|  501 | Bob       |
+------+-----------+
3 rows in set (0.00 sec)

ประยุกต์ใช้: เหมาะสำหรับการแมปค่าเก่าเป็นค่าใหม่, ระบบย้ายข้อมูล (migration), หรือกำหนดรหัสเฉพาะกลุ่ม