MySQL nie ma rzeczywistości pojęcie wartości logicznych i po prostu mapuje TRUE
i FALSE
do wartości liczbowych 1
i 0
odpowiednio.
W tym przypadku user_id <> ?
zwróci 0 dla większości wierszy w Twojej tabeli i 1 dla pozostałych wierszy. Domyślna kolejność sortowania to ASC
, co oznacza, że według wszelkiego prawdopodobieństwa żądane wiersze znajdują się na dole zestawu wyników (0/FALSE
przyjdź przed 1/TRUE
). Spróbuj zmodyfikować zapytanie, aby to uwzględnić.
( user_id <> ? ) DESC, rating DESC, title
Zakładając, że rzeczywiście jest to problem, zgodność między bazami danych można osiągnąć z łatwością.
IF(user = ?, 0, 1), rating DESC, title