sql >> Database teknologi >  >> RDS >> PostgreSQL

skinner sorteres efter specifc rækkefølge

Da 3, 4, 2 ikke er en sekventiel rækkefølge, bør der være en brugerdefineret betingelse for at bestille dem korrekt, du kan gøre det ved at bruge CASE WHEN udtryk .

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)

Hvilket vil give 0 når users_count = 3 , 1 når users_count = 4 og 3 for andre sager. Med standard stigende rækkefølge får du det resultat, du ønsker.



  1. Beregner du et glidende gennemsnit i MySQL?

  2. to_char(tal) funktion i postgres

  3. DATEFROMPARTS() Eksempler i SQL Server (T-SQL)

  4. Kæmper med en MySQL-database med telefonnumre