Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

como garantir que um registro esteja sempre no topo de um determinado conjunto de resultados no mysql?

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

p.id=14 retorna 1 se a condição for verdadeira, 0 caso contrário, a classificação decrescente traz a linha desejada para o topo.

Retornar um número de uma comparação é um recurso do MySQL, com SQL padrão você escreveria:
ORDER BY CASE WHEN (p.id=14) THEN 0 ELSE 1 END,
         CASE WHEN (p.mPrice=p.vPrice) THEN 0 ELSE 1 END

Acho isso mais fácil de ler do que o UNION , e pode ter um desempenho melhor.