ORDER BY (p.id=14) DESC, (p.mPrice=p.vPrice) DESC
p.id=14 1を返します 条件が真の場合、0 それ以外の場合は、降順で並べ替えると、目的の行が一番上に表示されます。
比較から数値を返すことはMySQLの機能であり、標準のSQLを使用して次のように記述します。
ORDER BY CASE WHEN (p.id=14) THEN 0 ELSE 1 END,
CASE WHEN (p.mPrice=p.vPrice) THEN 0 ELSE 1 END
これはUNIONよりも読みやすいと思います 、パフォーマンスが向上する可能性があります。