คำสั่ง SQL ORDER BY กำหนดลำดับของเรคอร์ดที่คิวรี่คืนค่า สามารถจัดเรียงแบบ ascending (น้อยไปมาก) หรือ descending (มากไปน้อย) ตามค่าของคอลัมน์ใดๆ ในตาราง
การจัดเรียงผลลัพธ์คิวรี่ช่วยให้หาเรคอร์ดที่ต้องการได้ง่ายขึ้น
เช่น ต้องการทราบว่าพนักงานคนไหนได้รางวัล "พนักงานเดือน" มากที่สุด อาจต้องการจัดเรียงคิวรี่โดยจุดข้อมูลนั้น เพื่อแสดงคนที่ได้รางวัลมากที่สุดก่อน
คำสั่ง SQL ORDER BY จัดเรียงผลลัพธ์คิวรี่ตามเงื่อนไขของคุณ ในบทช่วยสอนนี้ เราจะอธิบายวิธีใช้ ORDER BY พร้อมตัวอย่าง
SQL ORDER BY
คีย์เวิร์ด SQL ORDER BY จัดเรียงผลลัพธ์คิวรี่ สามารถจัดเรียง ascending หรือ descending ตามคอลัมน์เฉพาะหรือหลายคอลัมน์
ไวยากรณ์คิวรี่ ORDER BY:
SELECT name FROM employees ORDER BY name, joined ASC;
หลังคำสั่ง SQL SELECT ระบุชื่อคอลัมน์ที่ต้องการ ระบุว่าดึงจากตาราง employees
คำสั่ง ORDER BY จัดเรียงคิวรี่โดยคอลัมน์ name และ joined แบบ descending ฐานข้อมูลจะจัดเรียงตามชื่อ descending ก่อน
SQL จัดเรียงคอลัมน์ ascending โดยค่าเริ่มต้น สามารถระบุ ascending หรือ descending ได้ด้วย clause ORDER BY
2 รูปแบบการจัดเรียง:
- ASC: Ascending (น้อยไปมาก / ก-ฮ)
- DESC: Descending (มากไปน้อย / ฮ-ก)
สามารถใช้รายการคอลัมน์จัดเรียงหลายคอลัมน์ด้วยลำดับต่างกัน:
SELECT name FROM employees ORDER BY name ASC, joined DESC;
คิวรี่นี้จัดเรียงตารางตาม name ascending แล้วค่อย joined descending
ตัวอย่าง ORDER BY SQL
ลองรันคิวรี่ตัวอย่างสาธิต ORDER BY ต้องการรายชื่อพนักงานทั้งหมดและตำแหน่ง จัดเรียงตามชื่อพนักงานตามลำดับอักษรไทย (A-Z)
คิวรี่:
SELECT name, title FROM employees ORDER BY name ASC;
ผลลัพธ์เรียงลำดับ ascending:
| name | title |
| Alexis | Sales Associate |
| Geoff | Senior Sales Associate |
| Hannah | Sales Associate |
| Jonah | Vice President of Sales |
| Luke | Sales Associate |
| Mike | Sales Associate |
หากต้องการเรียงย้อนกลับ (Z-A) ให้เปลี่ยน ASC เป็น DESC
ยังสามารถจัดเรียงหลายคอลัมน์ได้ มีประโยชน์หากมีค่าซ้ำในตารางที่ต้องการจัดเรียงเพิ่มเติม
เช่น ต้องการทราบว่าใครทำงานนานที่สุด จัดกลุ่มตามตำแหน่ง ใช้คิวรี่:
SELECT name, title, hired_date FROM employees ORDER BY title, hired_date DESC;
คำสั่ง ORDER BY จัดเรียงผลลัพธ์ ผลลัพธ์:
| name | title | hired_date |
| Emma | Marketing Director | 2010-03-19 |
| Alexis | Sales Associate | 2014-04-01 |
| Hannah | Sales Associate | 2011-09-30 |
| Mike | Sales Associate | 2010-03-19 |
| Luke | Sales Associate | 2009-12-03 |
| Geoff | Senior Sales Associate | 2012-03-17 |
| Jonah | Vice President of Sales | 2010-07-23 |
(7 แถว)
ตารางจัดเรียงตามตำแหน่งและวันที่เข้าทำงาน พนักงานขายที่เข้าล่าสุดคือ Alexis ทำงานนานที่สุดคือ Luke สามารถเห็นวันที่เข้าทำงานของทุกคน จัดกลุ่มตามตำแหน่ง
สรุป
คำสั่ง SQL ORDER BY เปลี่ยนลำดับเรคอร์ดที่คิวรี่คืนค่า สามารถจัดเรียง ascending หรือ descending ค่าเริ่มต้นคือ ascending
อยากเรียนรู้ SQL เพิ่มเติม? อ่านคู่มือ How to Learn SQL ของเรา จะพบทีปส์ชั้นนำและแหล่งเรียนรู้ที่เราเตรียมไว้