สั่งซื้อโดยใน MySQL: แบบสอบถาม DESC & ASC พร้อมตัวอย่าง
การเรียงลำดับผลลัพธ์
เมื่อใช้คำสั่ง SELECT ผลลัพธ์จะถูกส่งกลับในลำดับเดียวกับที่บันทึกถูกเพิ่มลงในฐานข้อมูล นี่คือลำดับการจัดเรียงเริ่มต้น ในส่วนนี้ เราจะมาดูกันว่าเราจะจัดเรียงผลลัพธ์การสืบค้นของเราได้อย่างไร การเรียงลำดับเป็นเพียงการจัดเรียงผลลัพธ์การสืบค้นของเราใหม่ตามวิธีที่กำหนด การเรียงลำดับสามารถทำได้ในคอลัมน์เดียวหรือมากกว่าหนึ่งคอลัมน์ สามารถทำได้ทั้งกับตัวเลข สตริง และประเภทข้อมูลวันที่
ORDER BY คืออะไร? MySQL?
MySQL สั่งโดย ใช้ร่วมกับแบบสอบถาม SELECT เพื่อจัดเรียงข้อมูลอย่างเป็นระเบียบ ที่ MySQL ORDER BY clause ใช้เพื่อเรียงลำดับชุดผลลัพธ์แบบสอบถามจากน้อยไปหามากหรือจากมากไปหาน้อย
SELECT statement... [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
ที่นี่
- "คำสั่ง SELECT... " เป็นแบบสอบถามแบบใช้เลือกข้อมูลปกติ
- - - แสดงถึงทางเลือกอื่น
- “[เงื่อนไขอยู่ที่ไหน | จัดกลุ่มตาม `field_name(s)` มีเงื่อนไข” เป็นเงื่อนไขทางเลือกที่ใช้ในการกรองชุดผลลัพธ์การสืบค้น
- "สั่งโดย" ดำเนินการเรียงลำดับชุดผลลัพธ์แบบสอบถาม
- “[เอเอสซี | รายละเอียด]” เป็นคำสำคัญที่ใช้ในการเรียงลำดับชุดผลลัพธ์จากน้อยไปหามากหรือจากมากไปน้อย บันทึก ASC ถูกใช้เป็นค่าเริ่มต้น
- SELECT {ชื่อฟิลด์ | *} จากชื่อตาราง คือคำสั่งที่มีเขตข้อมูลและตารางที่จะใช้รับชุดผลลัพธ์
- [เงื่อนไขอยู่ที่ไหน] เป็นทางเลือกแต่สามารถใช้เพื่อกรองข้อมูลตามเงื่อนไขที่กำหนดได้
- สั่งโดย ชื่อฟิลด์เป็นฟิลด์บังคับและเป็นฟิลด์ที่จะดำเนินการเรียงลำดับ ที่ MySQL คีย์เวิร์ด DESC ระบุว่าการเรียงลำดับจะเรียงลำดับจากมากไปน้อย
- [จำกัด] เป็นทางเลือก แต่สามารถใช้เพื่อจำกัดจำนวนผลลัพธ์ที่ส่งคืนจากชุดผลลัพธ์แบบสอบถาม
คำหลัก DESC และ ASC คืออะไร
ใช้เพื่อจัดเรียงผลลัพธ์แบบสอบถามในรูปแบบจากบนลงล่าง | ใช้เพื่อจัดเรียงผลลัพธ์แบบสอบถามในรูปแบบจากล่างขึ้นบน |
เมื่อทำงานกับชนิดข้อมูลวันที่ วันที่แรกสุดจะแสดงที่ด้านบนของรายการ | - เมื่อทำงานกับประเภทวันที่ วันที่ล่าสุดจะแสดงที่ด้านบนของรายการ |
เมื่อทำงานกับชนิดข้อมูลตัวเลข ค่าต่ำสุดจะแสดงที่ด้านบนของรายการ | เมื่อทำงานกับชนิดข้อมูลตัวเลข ค่าสูงสุดจะแสดงที่ด้านบนของชุดผลลัพธ์คิวรี |
เมื่อทำงานกับชนิดข้อมูลสตริง ชุดผลลัพธ์คิวรีจะถูกเรียงลำดับจากที่ขึ้นต้นด้วยตัวอักษร A ไปจนถึงตัวอักษร Z | เมื่อทำงานกับชนิดข้อมูลสตริง ชุดผลลัพธ์คิวรีจะถูกเรียงลำดับจากที่ขึ้นต้นด้วยตัวอักษร Z ลงไปถึงตัวอักษร A |
ทั้งคีย์เวิร์ด SQL DESC และ ASC ใช้ร่วมกับคำสั่ง SELECT และ MySQL เรียงตามข้อ
ไวยากรณ์ DESC และ ASC
คีย์เวิร์ดการเรียงลำดับ SQL DESC มีรูปแบบพื้นฐานดังต่อไปนี้
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
ที่นี่
ตัวอย่าง:
ตอนนี้เรามาดูตัวอย่างเชิงปฏิบัติกัน -
SELECT * FROM members;
ดำเนินการสคริปต์ข้างต้นใน MySQL การใช้งาน workbench กับ myflixdb จะให้ผลลัพธ์ดังแสดงด้านล่างนี้
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 |
ลองสมมติว่าฝ่ายการตลาดต้องการให้รายละเอียดสมาชิกเรียงตามลำดับวันเกิดจากน้อยไปมาก วิธีนี้จะช่วยให้สมาชิกส่งคำอวยพรวันเกิดได้ทันเวลา เราสามารถรับรายชื่อดังกล่าวได้โดยดำเนินการค้นหาตามด้านล่างนี้
SELECT * FROM members ORDER BY date_of_birth DESC;
ดำเนินการสคริปต์ข้างต้นใน MySQL การใช้งาน workbench กับ myflixdb จะให้ผลลัพธ์ดังแสดงด้านล่างนี้
แบบสอบถามเดียวกันโดยเรียงลำดับจากน้อยไปหามาก
SELECT * จากสมาชิก เรียงตาม date_of_birth ASC
หมายเหตุ: ค่า NULL หมายถึงไม่มีค่า (ไม่ใช่ศูนย์หรือสตริงว่าง) สังเกตวิธีการจัดเรียง
ตัวอย่างเพิ่มเติม
มาพิจารณาสคริปต์การเรียงลำดับ SQL ต่อไปนี้ที่แสดงรายชื่อระเบียนสมาชิกทั้งหมด
SELECT * FROM `members`;
เมื่อดำเนินการสคริปต์ข้างต้นจะได้ผลลัพธ์ดังแสดงด้านล่าง
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
สมมติว่าเราต้องการได้รับรายการที่เรียงลำดับชุดผลลัพธ์แบบสอบถามโดยใช้ฟิลด์เพศ เราจะใช้สคริปต์ที่แสดงด้านล่าง
SELECT * FROM `members` ORDER BY `gender`;
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
สมาชิก "เพศหญิง" จะแสดงก่อนตามด้วยสมาชิก "ชาย" เนื่องจากเมื่อใช้คำสั่ง ORDER BY DESC โดยไม่ได้ระบุ ASC หรือ MySQL คำหลัก DESC ตามค่าเริ่มต้น MySQL ได้เรียงลำดับชุดผลลัพธ์แบบสอบถามตามลำดับจากน้อยไปหามาก
ตอนนี้เรามาดูตัวอย่างที่ทำ การเรียงลำดับโดยใช้สองคอลัมน์- อันแรกคือ เรียง in ลำดับจากน้อยไปมาก โดยค่าเริ่มต้นในขณะที่คอลัมน์ที่สองเป็น เรียง in ลำดับจากมากไปน้อย
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
ดำเนินการสคริปต์ข้างต้นใน MySQL workbench เทียบกับ myflixdb ให้ผลลัพธ์ดังต่อไปนี้
คอลัมน์เพศถูกจัดเรียงจากน้อยไปมากตามค่าเริ่มต้น ในขณะที่คอลัมน์วันเกิดถูกเรียงลำดับจากมากไปน้อยอย่างชัดเจน
เหตุใดเราจึงอาจใช้ DESC และ ASC
สมมติว่าเราต้องการพิมพ์ประวัติการชำระเงินสำหรับสมาชิกห้องสมุดวิดีโอเพื่อช่วยตอบคำถามจากแผนกต้อนรับ จะดีกว่าไหมถ้าให้พิมพ์การชำระเงินตามลำดับเวลาจากมากไปน้อยโดยเริ่มจากการชำระเงินครั้งล่าสุดไปจนถึงการชำระเงินครั้งก่อน
DESC ใน SQL เป็นคีย์เวิร์ดที่มีประโยชน์ในสถานการณ์เช่นนี้ เราสามารถเขียนแบบสอบถามที่เรียงลำดับรายการจากมากไปน้อยโดยใช้วันที่ชำระเงิน
สมมติว่าแผนกการตลาดต้องการรับรายชื่อภาพยนตร์ตามหมวดหมู่ที่สมาชิกสามารถใช้เพื่อตัดสินใจว่าภาพยนตร์เรื่องใดที่มีอยู่ในห้องสมุดเมื่อเช่าภาพยนตร์ จะไม่มีเหตุผลมากกว่าหรือไม่ที่จะจัดเรียงชื่อหมวดหมู่ภาพยนตร์และชื่อเรื่องจากน้อยไปมาก สมาชิกสามารถค้นหาข้อมูลจากรายการได้อย่างรวดเร็วหรือไม่?
คีย์เวิร์ด ASC มีประโยชน์ในสถานการณ์เช่นนี้ เราสามารถรับรายการภาพยนตร์เรียงตามชื่อหมวดหมู่และชื่อภาพยนตร์ตามลำดับจากน้อยไปหามาก
สรุป
- การเรียงลำดับผลลัพธ์คิวรีคือการจัดเรียงแถวที่ส่งคืนจากชุดผลลัพธ์คิวรีใหม่โดยเรียงลำดับจากน้อยไปหามากหรือจากมากไปหาน้อย
- คีย์เวิร์ด DESC ใน SQL ใช้เพื่อจัดเรียงผลลัพธ์คิวรีที่ตั้งค่าไว้จากมากไปน้อย
- คำสำคัญ ASC ใช้เพื่อเรียงลำดับชุดผลลัพธ์แบบสอบถามจากน้อยไปหามาก
- ทั้ง DESC และ ASC ทำงานร่วมกับคีย์เวิร์ด ORDER BY นอกจากนี้ยังสามารถใช้ร่วมกับคำหลักอื่นๆ เช่น WHERE ข้อ และจำกัด
- ค่าเริ่มต้นสำหรับ ORDER BY เมื่อไม่มีการระบุอย่างชัดเจนคือ ASC