ORDER BY (p.id=14) DESC, (p.mPrice=p.vPrice) DESC
p.id=14
vrátí 1
pokud je podmínka pravdivá, 0
jinak řazení sestupně přenese požadovaný řádek nahoru.
Vrácení čísla z porovnání je funkce MySQL, se standardním SQL byste napsali:
ORDER BY CASE WHEN (p.id=14) THEN 0 ELSE 1 END,
CASE WHEN (p.mPrice=p.vPrice) THEN 0 ELSE 1 END
Zdá se mi to srozumitelnější než UNION
a může fungovat lépe.