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
, и може да работи по-добре.