sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo asegurarse de que un registro esté siempre en la parte superior de un conjunto de resultados dado en mysql?

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

p.id=14 devuelve 1 si la condición es verdadera, 0 de lo contrario, la ordenación descendente lleva la fila deseada a la parte superior.

Devolver un número de una comparación es una característica de MySQL, con SQL estándar escribirías:

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

Encuentro esto más fácil de leer que UNION , y podría funcionar mejor.