MySQL har ingen rigtig begrebet booleaner og kortlægger simpelthen TRUE
og FALSE
til de numeriske værdier 1
og 0
hhv.
I dette tilfælde user_id <> ?
vil returnere 0 for størstedelen af rækkerne i din tabel og 1 for de andre rækker. Standardsorteringsrækkefølgen er ASC
, hvilket med stor sandsynlighed betyder, at de rækker, du ønsker, er bunden af dit resultatsæt (0/FALSE
kom før 1/TRUE
). Prøv at ændre din forespørgsel for at imødekomme dette.
( user_id <> ? ) DESC, rating DESC, title
Forudsat at dette faktisk er problemet, kan krydsdatabasekompatibilitet opnås med lethed.
IF(user = ?, 0, 1), rating DESC, title