MySQL har ingen riktig begreppet booleaner, och bara mappar TRUE
och FALSE
till de numeriska värdena 1
och 0
respektive.
I det här fallet user_id <> ?
returnerar 0 för majoriteten av raderna i din tabell och 1 för de andra raderna. Standardsorteringsordningen är ASC
, vilket med all sannolikhet innebär att raderna du vill ha är nedtill av din resultatuppsättning (0/FALSE
kom före 1/TRUE
). Försök att modifiera din fråga för att klara detta.
( user_id <> ? ) DESC, rating DESC, title
Förutsatt att detta verkligen är problemet, kan korsdatabaskompatibilitet uppnås med lätthet.
IF(user = ?, 0, 1), rating DESC, title