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.