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

รักษาลำดับ ID ตามที่กำหนดด้วย ORDER BY CASE ใน MySQL

เมื่อต้องการแสดงผลตามลำดับ ID ที่ระบุมา ไม่ใช่ลำดับตัวเลข ใช้ ORDER BY CASE

mysql> CREATE TABLE DemoTable1550 (
    -> Id INT,
    -> Name VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.61 sec)
mysql> INSERT INTO DemoTable1550 VALUES(101, 'Chris');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable1550 VALUES(110, 'Bob');
Query OK, 1 row affected (0.29 sec)
mysql> INSERT INTO DemoTable1550 VALUES(105, 'Carol');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable1550 VALUES(109, 'Mike');
Query OK, 1 row affected (0.17 sec)
mysql> SELECT * FROM DemoTable1550;
+------+-------+
| Id   | Name  |
+------+-------+
|  101 | Chris |
|  110 | Bob   |
|  105 | Carol |
|  109 | Mike  |
+------+-------+
4 rows in set (0.00 sec)

แสดงเฉพาะ ID 109, 101, 110 ตามลำดับนี้:

mysql> SELECT * FROM DemoTable1550
    -> WHERE Id IN (109, 101, 110)
    -> ORDER BY CASE Id
    ->   WHEN 109 THEN 1001
    ->   WHEN 101 THEN 1002
    ->   WHEN 110 THEN 1003
    -> END;
+------+-------+
| Id   | Name  |
+------+-------+
|  109 | Mike  |
|  101 | Chris |
|  110 | Bob   |
+------+-------+
3 rows in set (0.00 sec)

เทคนิค: กำหนดตัวเลขลำดับใน CASE ตามต้องการ ใช้ได้กับรายการ ID ที่ส่งมาจากแอปพลิเคชัน