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
よりも読みやすいと思います 、パフォーマンスが向上する可能性があります。