PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Schienen nach bestimmter Reihenfolge sortieren

Da 3, 4, 2 keine sequentielle Reihenfolge ist, sollte es eine benutzerdefinierte Bedingung geben, um sie richtig anzuordnen. Sie können dies tun, indem Sie das CASE WHEN Ausdruck .

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)

Was 0 ergibt wenn users_count = 3 , 1 wenn users_count = 4 , und 3 für andere Fälle. Mit der aufsteigenden Standardreihenfolge erhalten Sie das gewünschte Ergebnis.