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

MySQL Order By คอลัมน์วันที่และคอลัมน์จำนวนเต็ม แต่ระบุกฎการสั่งซื้อของคอลัมน์จำนวนเต็ม? เป็นไปได้ไหม?


คุณสามารถบรรลุสิ่งนี้ได้ด้วยความช่วยเหลือของคำสั่ง 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 วินาที)