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

จัดเรียง MySQL ให้ 0 อยู่ก่อน แล้วตามด้วยค่ามากไปน้อย

ใช้ ORDER BY column=0 DESC, column DESC เพื่อให้ 0 อยู่บนสุด แล้วค่าอื่นเรียงจากมากไปน้อย

ตัวอย่าง

mysql> create table DemoTable ( Value int );
Query OK, 0 rows affected (0.65 sec)
mysql> insert into DemoTable values(90);  Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable values(0);   Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(20);  Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values(0);   Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values(10);  Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values(70);  Query OK, 1 row affected (0.34 sec)
mysql> insert into DemoTable values(0);   Query OK, 1 row affected (0.15 sec)

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

mysql> select * from DemoTable;
+-------+
| Value |
+-------+
| 90    |
| 0     |
| 20    |
| 0     |
| 10    |
| 70    |
| 0     |
+-------+

คำสั่งจัดเรียง

mysql> select * from DemoTable order by Value=0 DESC, Value DESC;

ผลลัพธ์

+-------+
| Value |
+-------+
| 0     |
| 0     |
| 0     |
| 90    |
| 70    |
| 20    |
| 10    |
+-------+

Value=0 คืนค่า 1 (true) สำหรับ 0 และ 0 (false) สำหรับค่าอื่น เรียง DESC จะทำให้ 1 (คือ 0) อยู่บนสุด