ใน MYSQL เนื่องจากเราทราบว่าค่า ENUM แต่ละค่าเชื่อมโยงกับหมายเลขดัชนี พื้นฐานสำหรับการจัดเรียงค่า ENUM ก็คือหมายเลขดัชนีด้วย นอกจากนี้ หมายเลขดัชนีจะขึ้นอยู่กับลำดับที่สมาชิกการแจงนับถูกระบุไว้ในข้อมูลจำเพาะของคอลัมน์ ตัวอย่างเช่น ในคอลัมน์ ENUM ('GOOD', 'EXCELLENT') 'GOOD' จะเรียงลำดับก่อน 'EXCELLENT' ในอีกแง่หนึ่ง เราสามารถพูดได้ว่าหมายเลขดัชนีของ 'GOOD' จะเป็น '1' และหมายเลขดัชนีของ 'EXCELLENT' จะเป็น '2'
MySQL ยังสามารถเก็บสตริงว่างและค่า Null ไว้ใน ENUM มันเรียงลำดับสตริงว่างก่อนสตริงที่ไม่ว่างและ NULL ก่อนสตริงว่าง ดังนั้นการเรียงลำดับจะเป็นดังนี้ −
การเรียงลำดับค่า ENUM |
1. NULL |
2. สตริงว่าง |
3. สตริงที่ไม่ว่าง |
ตัวอย่าง
ในตัวอย่างนี้ เรามีตาราง 'ผลลัพธ์' ที่มีคอลัมน์ ENUM 'เกรด' ตารางนี้มีค่าดังต่อไปนี้
mysql> Select * from Result; +-----+--------+-------+ | Id | Name | Grade | +-----+--------+-------+ | 100 | Gaurav | GOOD | | 101 | Rahul | POOR | | 102 | Rahul | NULL | | 103 | Mohan | | +-----+--------+-------+ 4 rows in set (0.00 sec)
ตอนนี้หลังจากใช้คำสั่ง ORDER BY MySQL จะคืนค่าเอาต์พุตที่เรียงลำดับ เราสามารถสังเกตได้ว่าผลลัพธ์จะถูกจัดเรียงตามหมายเลขดัชนี
mysql> Select * from result order by grade; +-----+--------+-------+ | Id | Name | Grade | +-----+--------+-------+ | 102 | Rahul | NULL | | 103 | Mohan | | | 101 | Rahul | POOR | | 100 | Gaurav | GOOD | +-----+--------+-------+ 4 rows in set (0.00 sec)