สั่งซื้อโดยใน 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 ถูกใช้เป็นค่าเริ่มต้น
  • คำหลัก DESC และ ASC คืออะไร

    คำหลัก DESC และ ASCASC เป็นรูปแบบย่อของการขึ้น คำหลัก DESC และ ASCMySQL DESC เป็นรูปแบบย่อของการลงจากมากไปน้อย
    ใช้เพื่อจัดเรียงผลลัพธ์แบบสอบถามในรูปแบบจากบนลงล่าง ใช้เพื่อจัดเรียงผลลัพธ์แบบสอบถามในรูปแบบจากล่างขึ้นบน
    เมื่อทำงานกับชนิดข้อมูลวันที่ วันที่แรกสุดจะแสดงที่ด้านบนของรายการ - เมื่อทำงานกับประเภทวันที่ วันที่ล่าสุดจะแสดงที่ด้านบนของรายการ
    เมื่อทำงานกับชนิดข้อมูลตัวเลข ค่าต่ำสุดจะแสดงที่ด้านบนของรายการ เมื่อทำงานกับชนิดข้อมูลตัวเลข ค่าสูงสุดจะแสดงที่ด้านบนของชุดผลลัพธ์คิวรี
    เมื่อทำงานกับชนิดข้อมูลสตริง ชุดผลลัพธ์คิวรีจะถูกเรียงลำดับจากที่ขึ้นต้นด้วยตัวอักษร 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 {ชื่อฟิลด์ | *} จากชื่อตาราง คือคำสั่งที่มีเขตข้อมูลและตารางที่จะใช้รับชุดผลลัพธ์
    • [เงื่อนไขอยู่ที่ไหน] เป็นทางเลือกแต่สามารถใช้เพื่อกรองข้อมูลตามเงื่อนไขที่กำหนดได้
    • สั่งโดย ชื่อฟิลด์เป็นฟิลด์บังคับและเป็นฟิลด์ที่จะดำเนินการเรียงลำดับ ที่ MySQL คีย์เวิร์ด DESC ระบุว่าการเรียงลำดับจะเรียงลำดับจากมากไปน้อย
    • [จำกัด] เป็นทางเลือก แต่สามารถใช้เพื่อจำกัดจำนวนผลลัพธ์ที่ส่งคืนจากชุดผลลัพธ์แบบสอบถาม

    ตัวอย่าง:

    ตอนนี้เรามาดูตัวอย่างเชิงปฏิบัติกัน -

    SELECT * FROM members;

    ดำเนินการสคริปต์ข้างต้นใน MySQL การใช้งาน workbench กับ myflixdb จะให้ผลลัพธ์ดังแสดงด้านล่างนี้

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
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 จะให้ผลลัพธ์ดังแสดงด้านล่างนี้

ตัวอย่าง DESC และ ASC

แบบสอบถามเดียวกันโดยเรียงลำดับจากน้อยไปหามาก

SELECT * จากสมาชิก เรียงตาม date_of_birth ASC

ตัวอย่าง DESC และ ASC

หมายเหตุ: ค่า NULL หมายถึงไม่มีค่า (ไม่ใช่ศูนย์หรือสตริงว่าง) สังเกตวิธีการจัดเรียง

ตัวอย่างเพิ่มเติม

มาพิจารณาสคริปต์การเรียงลำดับ SQL ต่อไปนี้ที่แสดงรายชื่อระเบียนสมาชิกทั้งหมด

SELECT * FROM `members`;

เมื่อดำเนินการสคริปต์ข้างต้นจะได้ผลลัพธ์ดังแสดงด้านล่าง

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
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 email
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 และ ASC

สมมติว่าเราต้องการพิมพ์ประวัติการชำระเงินสำหรับสมาชิกห้องสมุดวิดีโอเพื่อช่วยตอบคำถามจากแผนกต้อนรับ จะดีกว่าไหมถ้าให้พิมพ์การชำระเงินตามลำดับเวลาจากมากไปน้อยโดยเริ่มจากการชำระเงินครั้งล่าสุดไปจนถึงการชำระเงินครั้งก่อน

DESC ใน SQL เป็นคีย์เวิร์ดที่มีประโยชน์ในสถานการณ์เช่นนี้ เราสามารถเขียนแบบสอบถามที่เรียงลำดับรายการจากมากไปน้อยโดยใช้วันที่ชำระเงิน

สมมติว่าแผนกการตลาดต้องการรับรายชื่อภาพยนตร์ตามหมวดหมู่ที่สมาชิกสามารถใช้เพื่อตัดสินใจว่าภาพยนตร์เรื่องใดที่มีอยู่ในห้องสมุดเมื่อเช่าภาพยนตร์ จะไม่มีเหตุผลมากกว่าหรือไม่ที่จะจัดเรียงชื่อหมวดหมู่ภาพยนตร์และชื่อเรื่องจากน้อยไปมาก สมาชิกสามารถค้นหาข้อมูลจากรายการได้อย่างรวดเร็วหรือไม่?

คีย์เวิร์ด ASC มีประโยชน์ในสถานการณ์เช่นนี้ เราสามารถรับรายการภาพยนตร์เรียงตามชื่อหมวดหมู่และชื่อภาพยนตร์ตามลำดับจากน้อยไปหามาก

สรุป

  • การเรียงลำดับผลลัพธ์คิวรีคือการจัดเรียงแถวที่ส่งคืนจากชุดผลลัพธ์คิวรีใหม่โดยเรียงลำดับจากน้อยไปหามากหรือจากมากไปหาน้อย
  • คีย์เวิร์ด DESC ใน SQL ใช้เพื่อจัดเรียงผลลัพธ์คิวรีที่ตั้งค่าไว้จากมากไปน้อย
  • คำสำคัญ ASC ใช้เพื่อเรียงลำดับชุดผลลัพธ์แบบสอบถามจากน้อยไปหามาก
  • ทั้ง DESC และ ASC ทำงานร่วมกับคีย์เวิร์ด ORDER BY นอกจากนี้ยังสามารถใช้ร่วมกับคำหลักอื่นๆ เช่น WHERE ข้อ และจำกัด
  • ค่าเริ่มต้นสำหรับ ORDER BY เมื่อไม่มีการระบุอย่างชัดเจนคือ ASC