Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utiliser une expression booléenne dans l'ordre par clause

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