There are times when sorting your resultset by the primary key doesn't accomplish what you need. One way to get around this is to create a sortable column dynamically in your query using the CASE function.
SELECT name, title, priority =
(CASE title
when 'President' then 1
when 'Vice President' then 2 when
'Secretary' then 3
when 'Treasurer' then 4
end)
FROM executive
ORDER BY priority
This example gives each title a priority and sorts by it. This could have been accomplished using a second table and joining to itbut why do that if you don't need to?