MySQL heeft geen echte begrip van booleans, en brengt eenvoudig TRUE . in kaart en FALSE naar de numerieke waarden 1 en 0 respectievelijk.
In dit geval user_id <> ? retourneert 0 voor de meeste rijen in uw tabel en 1 voor de andere rijen. De standaard sorteervolgorde is ASC , wat betekent dat naar alle waarschijnlijkheid de rijen die u wilt zich aan de onderkant . bevinden van uw resultatenset (0/FALSE kom voor 1/TRUE ). Probeer uw zoekopdracht aan te passen om hieraan tegemoet te komen.
( user_id <> ? ) DESC, rating DESC, title
Ervan uitgaande dat dit inderdaad het probleem is, kan compatibiliteit tussen databases gemakkelijk worden bereikt.
IF(user = ?, 0, 1), rating DESC, title