sql >> Database >  >> RDS >> Mysql

Booleaanse expressie gebruiken in volgorde van clausule

MySQL heeft geen echte begrip van booleans, en brengt eenvoudig TRUE . in kaart en FALSE naar de numerieke waarden 1 en 0 respectievelijk.

In dit geval user_id <> ? retourneert 0 voor de meeste rijen in uw tabel en 1 voor de andere rijen. De standaard sorteervolgorde is ASC , wat betekent dat naar alle waarschijnlijkheid de rijen die u wilt zich aan de onderkant . bevinden van uw resultatenset (0/FALSE kom voor 1/TRUE ). Probeer uw zoekopdracht aan te passen om hieraan tegemoet te komen.

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

Ervan uitgaande dat dit inderdaad het probleem is, kan compatibiliteit tussen databases gemakkelijk worden bereikt.

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


  1. Nieuw Mysqli-object is Null

  2. Opgeslagen Oracle-procedure aanroepen vanuit C#?

  3. Gematerialiseerde PostgreSQL-weergave

  4. django.db.utils.operationalError:(2059, Authentication Plugin 'caching_sha2_password')