Mysql
 sql >> Database >  >> RDS >> Mysql

Utilizzo dell'espressione booleana in ordine per clausola

MySQL non ha un reale nozione di booleani e semplicemente mappe TRUE e FALSE ai valori numerici 1 e 0 rispettivamente.

In questo caso user_id <> ? restituirà 0 per la maggior parte delle righe nella tabella e 1 per le altre righe. L'ordinamento predefinito è ASC , il che significa che con ogni probabilità le righe desiderate si trovano in fondo del tuo set di risultati (0/FALSE vieni prima 1/TRUE ). Prova a modificare la tua query per soddisfare questo.

( user_id <> ? ) DESC, rating DESC, title

Supponendo che questo sia effettivamente il problema, la compatibilità tra database può essere raggiunta facilmente.

IF(user = ?, 0, 1), rating DESC, title