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

Brug af boolesk udtryk i rækkefølge efter klausul

MySQL har ingen rigtig begrebet booleaner og kortlægger simpelthen TRUE og FALSE til de numeriske værdier 1 og 0 hhv.

I dette tilfælde user_id <> ? vil returnere 0 for størstedelen af ​​rækkerne i din tabel og 1 for de andre rækker. Standardsorteringsrækkefølgen er ASC , hvilket med stor sandsynlighed betyder, at de rækker, du ønsker, er bunden af dit resultatsæt (0/FALSE kom før 1/TRUE ). Prøv at ændre din forespørgsel for at imødekomme dette.

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

Forudsat at dette faktisk er problemet, kan krydsdatabasekompatibilitet opnås med lethed.

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


  1. Kan Django-modeller bruge MySQL-funktioner?

  2. Mysql laver en lagret procedure fra flere lagrede procedurer

  3. PDO::forespørgsel vs. PDOStatement::execute (PHP og MySQL)

  4. Sådan opretter du en grupperet rapport ved hjælp af rapportguiden i Access 2016