ORDER BY (p.id=14) DESC, (p.mPrice=p.vPrice) DESC
p.id=14 devuelve 1 si la condición es verdadera, 0 de lo contrario, la ordenación descendente lleva la fila deseada a la parte superior.
Devolver un número de una comparación es una característica de MySQL, con SQL estándar escribirías:
ORDER BY CASE WHEN (p.id=14) THEN 0 ELSE 1 END,
CASE WHEN (p.mPrice=p.vPrice) THEN 0 ELSE 1 END
Encuentro esto más fácil de leer que UNION , y podría funcionar mejor.