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

เรียงลำดับรายการใน MySQL และกำหนดให้ค่าคงที่อยู่ท้ายสุด

การเรียงลำดับแบบกำหนดเอง: นำค่าเฉพาะไปอยู่ท้ายสุด

เราสามารถใช้เงื่อนไข Boolean ใน ORDER BY เพื่อบังคับให้แถวที่ตรงเงื่อนไขอยู่ท้ายสุด (หรือหน้าสุด) โดยที่ค่าอื่นเรียงตามปกติ

สร้างตารางและเพิ่มข้อมูล

mysql> CREATE TABLE DemoTable (FirstName VARCHAR(100));
Query OK, 0 rows affected (0.97 sec)

mysql> INSERT INTO DemoTable VALUES('Chris');
mysql> INSERT INTO DemoTable VALUES('Adam');
mysql> INSERT INTO DemoTable VALUES('John');
mysql> INSERT INTO DemoTable VALUES('Sam');
mysql> INSERT INTO DemoTable VALUES('Mike');
mysql> INSERT INTO DemoTable VALUES('David');

แสดงข้อมูลทั้งหมด

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+-----------+
| FirstName |
+-----------+
| Chris     |
| Adam      |
| John      |
| Sam       |
| Mike      |
| David     |
+-----------+
6 rows in set (0.00 sec)

คำสั่งเรียง A-Z แต่บังคับให้ 'Mike' อยู่ท้ายสุด

mysql> SELECT * FROM DemoTable ORDER BY FirstName = 'Mike', FirstName;

ผลลัพธ์:

+-----------+
| FirstName |
+-----------+
| Adam      |
| Chris     |
| David     |
| John      |
| Sam       |
| Mike      |
+-----------+
6 rows in set (0.00 sec)

คำอธิบาย

  • FirstName = 'Mike' : นิพจน์ Boolean คืนค่า 1 (TRUE) สำหรับแถวที่เป็น Mike, 0 (FALSE) สำหรับอื่นๆ
  • ORDER BY FirstName = 'Mike', FirstName : เรียงตามค่า Boolean ก่อน (0 ก่อน 1) แล้วค่อยเรียงตาม FirstName ตามปกติ
  • ผลคือ Mike (ซึ่งมีค่า 1) จะอยู่ท้ายสุด ส่วนอื่นเรียง A-Z ตามปกติ
  • หากต้องการให้อยู่หน้าสุด ให้ใช้ ORDER BY FirstName = 'Mike' DESC, FirstName