สำหรับเรื่องนี้ ใช้ UNION ครับ
สร้างตารางตัวอย่าง
mysql> create table DemoTable (
-> Number int
-> );
Query OK, 0 rows affected (1.17 sec)
เพิ่มข้อมูลตัวอย่าง
mysql> insert into DemoTable values(10); Query OK, 1 row affected (0.23 sec) mysql> insert into DemoTable values(100); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(-9); Query OK, 1 row affected (0.21 sec) mysql> insert into DemoTable values(-190); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(190); Query OK, 1 row affected (0.22 sec) mysql> insert into DemoTable values(0); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable values(140); Query OK, 1 row affected (0.16 sec)
แสดงข้อมูลทั้งหมด
mysql> select * from DemoTable;
ผลลัพธ์
+--------+ | Number | +--------+ | 10 | | 100 | | -9 | | -190 | | 190 | | 0 | | 140 | +--------+ 7 rows in set (0.00 sec)
คำสั่งแสดงค่าลบ DESC แล้วค่าบวก ASC (เริ่มจาก 0)
mysql> (select * from DemoTable where Number = 0)
-> union
-> (select * from DemoTable where Number < 0 order by Number desc)
-> union
-> (select * from DemoTable where Number > 0 order by Number);
ผลลัพธ์
+--------+ | Number | +--------+ | 0 | | -9 | | -190 | | 10 | | 100 | | 190 | | 140 | +--------+ 7 rows in set (0.03 sec)
คำอธิบาย: UNION รวมผลลัพธ์ 3 ส่วน: 1) ค่า 0 2) ค่าติดลบ เรียงมากไปน้อย (DESC) 3) ค่าบวก เรียงน้อยไปมาก (ASC)