Mysql
 sql >> Database >  >> RDS >> Mysql

come assicurarsi che un record sia sempre in cima a un determinato set di risultati in mysql?

ORDER BY (p.id=14) DESC, (p.mPrice=p.vPrice) DESC

p.id=14 restituisce 1 se la condizione è vera, 0 in caso contrario, quindi l'ordinamento decrescente porta in alto la riga desiderata.

Restituire un numero da un confronto è una funzionalità di MySQL, con SQL standard dovresti scrivere:

ORDER BY CASE WHEN (p.id=14) THEN 0 ELSE 1 END,
         CASE WHEN (p.mPrice=p.vPrice) THEN 0 ELSE 1 END

Lo trovo più facile da leggere rispetto a UNION e potrebbe funzionare meglio.