Thats because: It will order in the order the enum values are defined at table level – not the actual varchar/int/etc value.

Fix:

SELECT CAST(a.enumfield AS CHAR(255)) AS enumfield, a.*
FROM `mytable` a
ORDER BY CAST(a.enumfield AS CHAR(255)) ASC

Tip: change it to CAST X as INT – if you’ve got integers, so on and so forth.

Tip2: use table aliases