MySQL няма реален понятие за булеви и просто преобразува TRUE
и FALSE
към числовите стойности 1
и 0
съответно.
В този случай user_id <> ?
ще върне 0 за повечето редове във вашата таблица и 1 за останалите редове. Редът на сортиране по подразбиране е ASC
, което означава, че по всяка вероятност редовете, които искате, са в дъното от вашия набор от резултати (0/FALSE
елате преди 1/TRUE
). Опитайте да модифицирате заявката си, за да приемете това.
( user_id <> ? ) DESC, rating DESC, title
Ако приемем, че това наистина е проблемът, съвместимостта между бази данни може да бъде постигната с лекота.
IF(user = ?, 0, 1), rating DESC, title