คำสั่งที่ใช้สำหรับดึงข้อมูลออกจากฐานข้อมูล พร้อมทั้งจัดเรียงมันออกมาด้วยนั้น เขาใช้คำสั่ง order by

ข้อมูลที่ถูกจัดเรียงนั้น สามารถกำหนดให้เรียงมากไปหาน้อย หรือน้อยไปหามากก็ได้ ถ้าเป็นตัวอักษรน้อยไปหามาก มันก็จะเรียงจาก a-z ถ้าเป็นตัวเลข ก็จะเรียงจาก 0 ขึ้นไปเรื่อยๆ

ทีนี้มันมีปัญหาอยู่ว่า ถ้าเราต้องการ ให้ bangkok มันขึ้นก่อน แล้วค่อยเป็น Sandnes แล้วจึงเป็น Indo

City
Sandnes
Bangkok
Indo

ความต้องการอย่างนี้เราต้องใช้ฟังก์ชั่นเข้าช่วย แปลงคำให้เป็นตัวเลข แล้วค่อยจัดเรียง

SELECT * FROM tbl_city ORDER BY 
  (
       CASE city_name
       WHEN "Bangkok" 	THEN 1
       WHEN "Sandnes" 	THEN 2
       ELSE 3 END
  ) ASC

เราใช้ CASE เข้าช่วย ถ้า ฟิลด์ city_name มีค่า Bangkok ให้แปลงค่าเป็น 1 ถ้า Sandnes ก็ให้เป็น 2 ถ้านอกเหนือจากนั้นก็ให้เป็น 3 พอจัดเรียงมันก็ Bangkok จะมาก่อน

นี่ละครับเทคนิคการ order by แบบ advance