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

กำหนดแถวคงที่ไว้บนสุด แล้ว ORDER BY DESC ส่วนที่เหลือใน MySQL

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

ตัวอย่างการสร้างตาราง

mysql> create table DemoTable ( 
    id int ); 
Query OK, 0 rows affected (0.52 sec)

เพิ่มข้อมูลตัวเลขสุ่ม

mysql> insert into DemoTable values(10); 
Query OK, 1 row affected (0.43 sec)
mysql> insert into DemoTable values(7); 
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values(8); 
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values(6); 
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(9); 
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(11); 
Query OK, 1 row affected (0.12 sec)

แสดงข้อมูลก่อนจัดเรียง

mysql> select * from DemoTable;
+------+
| id   |
+------+
| 10   |
| 7    |
| 8    |
| 6    |
| 9    |
| 11   |
+------+
6 rows in set (0.00 sec)

คำสั่ง ORDER BY ปักหมุด id=10 ไว้บนสุด แล้วเรียงน้อยไปมาก

mysql> select * from DemoTable order by id = 10 DESC, id ASC;

ผลลัพธ์

+------+
| id   |
+------+
| 10   |
| 6    |
| 7    |
| 8    |
| 9    |
| 11   |
+------+
6 rows in set (0.00 sec)

คำอธิบาย: id = 10 คืนค่า 1 (TRUE) สำหรับแถวที่ id=10 และ 0 (FALSE) สำหรับอื่นๆ DESC ทำให้ TRUE (1) อยู่บนสุด แล้ว id ASC เรียงส่วนที่เหลือจากน้อยไปมาก

ประยุกต์ใช้: แสดงสินค้าแนะนำ/โปรโมชั่นไว้บนสุด แล้วเรียงสินค้าอื่นตามปกติ