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

จัดเรียงฟิลด์เดียวก่อน แล้วแสดงที่เหลือตามลำดับเดิมใน MySQL

ใช้ ORDER BY (condition) DESC ยกแถวที่ตรงเงื่อนไขขึ้นบน ส่วนที่เหลือคงลำดับเดิม

mysql> CREATE TABLE DemoTable (
    -> Id INT,
    -> Name VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.82 sec)
mysql> INSERT INTO DemoTable VALUES(201, 'Chris Brown');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable VALUES(110, 'John Doe');
Query OK, 1 row affected (0.29 sec)
mysql> INSERT INTO DemoTable VALUES(101, 'Adam Smith');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable VALUES(345, 'Carol Taylor');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable VALUES(135, 'John Smith');
Query OK, 1 row affected (0.11 sec)
mysql> SELECT * FROM DemoTable;
+------+--------------+
| Id   | Name         |
+------+--------------+
|  201 | Chris Brown  |
|  110 | John Doe     |
|  101 | Adam Smith   |
|  345 | Carol Taylor |
|  135 | John Smith   |
+------+--------------+
5 rows in set (0.00 sec)

ยก ID=101 ขึ้นบน ส่วนอื่นคงลำดับ:

mysql> SELECT * FROM DemoTable ORDER BY (Id = 101) DESC;
+------+--------------+
| Id   | Name         |
+------+--------------+
|  101 | Adam Smith   |
|  201 | Chris Brown  |
|  110 | John Doe     |
|  345 | Carol Taylor |
|  135 | John Smith   |
+------+--------------+
5 rows in set (0.00 sec)

หลักการ: (Id = 101) คืน 1 (True) สำหรับแถวที่ตรง 0 (False) สำหรับอื่นๆ DESC ให้ 1 อยู่หน้า