MySQL não tem real noção de booleanos, e simplesmente mapeia
TRUE
e FALSE
aos valores numéricos 1
e 0
respectivamente. Neste caso
user_id <> ?
retornará 0 para a maioria das linhas em sua tabela e 1 para as outras linhas. A ordem de classificação padrão é ASC
, o que significa que provavelmente as linhas que você deseja estão na parte inferior do seu conjunto de resultados (0/FALSE
venha antes 1/TRUE
). Tente modificar sua consulta para acomodar isso. ( user_id <> ? ) DESC, rating DESC, title
Supondo que esse seja realmente o problema, a compatibilidade entre bancos de dados pode ser alcançada com facilidade.
IF(user = ?, 0, 1), rating DESC, title