ORDER BY (p.id=14) DESC, (p.mPrice=p.vPrice) DESC
p.id=14
returnerer 1
hvis betingelsen er sand, 0
ellers, så sortering faldende bringer den ønskede række til toppen.
At returnere et tal fra en sammenligning er en MySQL-funktion, med standard SQL ville du skrive:
ORDER BY CASE WHEN (p.id=14) THEN 0 ELSE 1 END,
CASE WHEN (p.mPrice=p.vPrice) THEN 0 ELSE 1 END
Jeg finder det nemmere at læse end UNION
, og det kan muligvis fungere bedre.