sql >> Databasteknik >  >> RDS >> Mysql

Använder booleskt uttryck i ordning efter sats

MySQL har ingen riktig begreppet booleaner, och bara mappar TRUE och FALSE till de numeriska värdena 1 och 0 respektive.

I det här fallet user_id <> ? returnerar 0 för majoriteten av raderna i din tabell och 1 för de andra raderna. Standardsorteringsordningen är ASC , vilket med all sannolikhet innebär att raderna du vill ha är nedtill av din resultatuppsättning (0/FALSE kom före 1/TRUE ). Försök att modifiera din fråga för att klara detta.

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

Förutsatt att detta verkligen är problemet, kan korsdatabaskompatibilitet uppnås med lätthet.

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


  1. Ta bort HTML-taggar från posten

  2. C# med MySQL - Fel:Guiden bör innehålla 32 siffror med 4 bindestreck när man försöker öppna anslutningen

  3. hur man ställer in längden på en kolumn i viloläge med maximal längd

  4. Användarnamn, Lösenord, Saltning, Kryptering, Hash – Hur fungerar det hela?