คำสั่ง ORDER BY ใน SQL ใช้สำหรับเรียงลำดับผลลัพธ์จากคำสั่ง SELECT ตามคอลัมน์ที่เราต้องการ โดยเราสามารถเลือกเรียงลำดับข้อมูลได้ทั้งแบบเรียงจากน้อยไปมาก (ascending) และมากไปน้อย (descending)
การใช้งานพื้นฐานของ ORDER BY
รูปแบบการใช้งานพื้นฐานของ ORDER BY คือ
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
column1,column2คือคอลัมน์ที่เราต้องการใช้เรียงลำดับASC(ascending) คือการเรียงจากน้อยไปมาก ซึ่งเป็นค่าเริ่มต้นDESC(descending) คือการเรียงจากมากไปน้อย
ตัวอย่างการใช้งาน
เรียงลำดับข้อมูลตามคอลัมน์เดียว
SELECT name, age
FROM customers
ORDER BY age ASC;จากตัวอย่าง ข้อมูลจะถูกเรียงตามอายุจากน้อยไปมาก
เรียงลำดับข้อมูลจากมากไปน้อย
SELECT name, age
FROM customers
ORDER BY age DESC;จากตัวอย่าง ข้อมูลจะถูกเรียงตามอายุจากมากไปน้อย
เรียงลำดับข้อมูลหลายคอลัมน์
SELECT name, age, city
FROM customers
ORDER BY city ASC, age DESC;จากตัวอย่าง ข้อมูลจะถูกเรียงตามเมือง (city) จากน้อยไปมากก่อน แล้วเรียงตามอายุ (age) จากมากไปน้อยภายในแต่ละเมือง
ใช้เลขดัชนีของคอลัมน์ใน ORDER BY
SELECT name, age, city
FROM customers
ORDER BY 3, 2;จากตัวอย่าง ข้อมูลจะถูกเรียงตามคอลัมน์ที่ 3 (city) ก่อน แล้วค่อยเรียงจากคอลัมน์ที่ 2 (age)
เรียงข้อมูลแบบกำหนดเองด้วย CASE
บางครั้งเราอาจต้องการเรียงข้อมูลตามเงื่อนไขเฉพาะ เช่น
SELECT name, age, membership_type
FROM customers
ORDER BY CASE
WHEN membership_type = 'Platinum' THEN 1
WHEN membership_type = 'Gold' THEN 2
WHEN membership_type = 'Silver' THEN 3
ELSE 4
END ASC;ผลลัพธ์: ข้อมูลจะถูกเรียงตามประเภทสมาชิก โดย Platinum จะอยู่ก่อน ตามด้วย Gold และ Silver
เรียงลำดับผลลัพธ์ที่ไม่ซ้ำกัน
สามารถใช้ ORDER BY ร่วมกับ DISTINCT เพื่อดึงข้อมูลที่ไม่ซ้ำและเรียงลำดับได้ เช่น
SELECT DISTINCT city
FROM customers
ORDER BY city;ผลลัพธ์: ข้อมูลจะถูกเรียงตามชื่อเมืองโดยไม่มีค่าซ้ำกัน
ข้อควรระวัง
- ถ้าเราใช้
ORDER BYในคอลัมน์ที่มีข้อมูลซ้ำ ผลลัพธ์อาจจะไม่เรียงตามที่คาดหวัง - การใช้คำสั่ง
ORDER BYกับข้อมูลจำนวนมาก อาจทำให้ประสิทธิภาพการประมวลผลช้าลง
