I can't access a MySQL now to test, so it might be reversed... but you can use the fact that Booleans also sort, and that you can have several sort fields.
SELECT ... ORDER BY id != 5, id
(you might have to write id = 5, I can't remember if TRUEs sort before or after FALSEs.)
EDIT: Oh, I just read that you don't care about the order of the rest, in which case I heartily recommend @Richard's answer.
If you want to do the same for UNION query, for example if you have:
select id,name
from friends
UNION
select id,name
from friends
order by id=5 desc
... you would get an exception in PostgreSQL:
Only result column names can be used, not expressions or functions. HINT: Add the expression/function to every SELECT, or move the UNION into a from clause
To get around this, you would use the following:
select id,name, (id=5) AS is_five
from friends
UNION
select id,name, (id=5) AS is_five
from friends
order by is_five DESC, id DESC
The expression (id=5) would return 't' OR 'f', depending on whether your column value is equal or not to the expected value (5), so the order by would first order the 't' columns, then the rest.
You should use MySQL's ORDER BY FIELD clause to solve this. Although, the answer has been accepted on this, here's a better solution.
select 1 id, 'Zeta' order_col union all
select 2 id, 'Alpha' order_col union all
select 3 id, 'Gamma' order_col union all
select 4 id, 'Phi' order_col union all
select 5 id, 'Delta' order_col union all
select 6 id, 'Delta' order_col union all
select 7 id, 'Alpha' order_col union all
select 8 id, 'Gamma' order_col union all
select 9 id, 'Zeta' order_col union all
select 10 id, 'Phi' order_col
order by field (order_col, 'Alpha', 'Gamma', 'Phi', 'Delta', 'Zeta'), id;
This is better than
id=something, order by id asc
order by case when something then 1 when something_else then 2 end desc