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