MySQL n'a pas de réel notion de booléens, et mappe simplement TRUE
et FALSE
aux valeurs numériques 1
et 0
respectivement.
Dans ce cas user_id <> ?
renverra 0 pour la majorité des lignes de votre tableau et 1 pour les autres lignes. L'ordre de tri par défaut est ASC
, ce qui signifie selon toute vraisemblance que les lignes que vous voulez sont en bas de votre jeu de résultats (0/FALSE
venir avant 1/TRUE
). Essayez de modifier votre requête pour tenir compte de cela.
( user_id <> ? ) DESC, rating DESC, title
En supposant que c'est bien le problème, la compatibilité entre les bases de données peut être obtenue facilement.
IF(user = ?, 0, 1), rating DESC, title