Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Usando expressão booleana em ordem por cláusula


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