คุณสามารถบรรลุสิ่งนี้ได้ด้วยความช่วยเหลือของคำสั่ง ORDER BY CASE ไวยากรณ์มีดังนี้ −
SELECT *FROM yourTableName ORDER BY CASE yourIntegerColumnName1 เมื่อ 2 แล้ว 1 ELSE 0 END DESC ,yourDateColumnName ASC;
เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้ −
mysql> สร้างตาราง OrderByCaseDemo -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> GroupId int, -> ArrivalDate date, -> PRIMARY KEY(Id) -> );Query OK, 0 แถวได้รับผลกระทบ (1.57 วินาที)
แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้ −
mysql> แทรกลงในค่า OrderByCaseDemo(GroupId,ArrivalDate) (2,'19/02/06'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที)mysql> แทรกลงในค่า OrderByCaseDemo (GroupId, ArrivalDate) (1, '20/02/06'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงในค่า OrderByCaseDemo (GroupId, ArrivalDate) (3,'18/02/06'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.12) sec)mysql> แทรกลงในค่า OrderByCaseDemo (GroupId,ArrivalDate) (3,'21/02/06'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.23 วินาที) mysql> แทรกลงในค่า OrderByCaseDemo (GroupId, ArrivalDate) (2,' 17/02/06'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงในค่า OrderByCaseDemo (GroupId,ArrivalDate) (1,'22/02/06'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที )
แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −
mysql> เลือก *จาก OrderByCaseDemo;
ต่อไปนี้เป็นผลลัพธ์ -
<ก่อนหน้า>+----+---------+-------------+| รหัส | รหัสกลุ่ม | วันที่มาถึง |+----+---------+-------------+| 1 | 2 | 2019-02-06 || 2 | 1 | 2020-02-06 || 3 | 3 | 2018-02-06 || 4 | 3 | 2021-02-06 || 5 | 2 | 2017-02-06 || 6 | 1 | 2022-02-06 | +----+---------+-----------+6 แถวในชุด (0.00 วินาที)นี่คือการสืบค้นเพื่อเรียงลำดับตามคอลัมน์วันที่และคอลัมน์จำนวนเต็ม -
mysql> เลือก *จาก OrderByCaseDemo เรียงลำดับตามกรณี GroupId เมื่อ 2 แล้ว 1 อื่น ๆ 0 สิ้นสุดการมาถึง ArrivalDate asc;
ต่อไปนี้เป็นผลลัพธ์ -
<ก่อนหน้า>+----+---------+-------------+| รหัส | รหัสกลุ่ม | วันที่มาถึง |+----+---------+-------------+| 5 | 2 | 2017-02-06 || 1 | 2 | 2019-02-06 || 3 | 3 | 2018-02-06 || 2 | 1 | 2020-02-06 || 4 | 3 | 2021-02-06 || 6 | 1 | 2022-02-06 |+----+---------+-------------+6 แถวในชุด (0.00 วินาที)