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