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

Usando la expresión booleana en order by cláusula

MySQL no tiene real noción de booleanos, y simplemente mapea TRUE y FALSE a los valores numéricos 1 y 0 respectivamente.

En este caso user_id <> ? devolverá 0 para la mayoría de las filas de su tabla y 1 para las otras filas. El orden de clasificación predeterminado es ASC , lo que significa que con toda probabilidad las filas que desea están en la parte inferior de su conjunto de resultados (0/FALSE ven antes 1/TRUE ). Intente modificar su consulta para acomodar esto.

( user_id <> ? ) DESC, rating DESC, title

Suponiendo que este sea realmente el problema, la compatibilidad entre bases de datos se puede lograr con facilidad.

IF(user = ?, 0, 1), rating DESC, title