sql >> Databasteknik >  >> RDS >> PostgreSQL

räls sorteras efter specifik ordning

Eftersom 3, 4, 2 inte är en sekventiell ordning bör det finnas ett anpassat villkor för att beställa dem korrekt, du kan göra det genom att använda CASE WHEN uttryck .

order_sql = Arel.sql(
  'CASE WHEN users_count = 3 THEN 0 ' \
    'WHEN users_count = 4 THEN 1 ' \
    'ELSE 3 END'
)
Group.where(users_count: [2,3,4]).order(order_sql)

Vilket ger 0 när users_count = 3 , 1 när users_count = 4 och 3 för andra fall. Med stigande standardordning får du det resultat du vill ha.



  1. ändra mysql till pdo och lagra resultatet i variabel

  2. Hur skriver jag om den här MySQL-frågan så att den inte ger det här felet:Du kan inte ange måltabellen 'crawlLog' för uppdatering i FROM-satsen?

  3. skapa en databas i mysql från java

  4. Behöver hjälp med att optimera en lat/Lon geo-sökning för mysql