sql >> Base de Datos >  >> RDS >> PostgreSQL

rieles ordenados por orden específico

Dado que 3, 4, 2 no es un orden secuencial, debe haber una condición personalizada para ordenarlos correctamente, puede hacerlo usando el CASE WHEN expresión .

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)

Lo que dará 0 cuando users_count = 3 , 1 cuando users_count = 4 y 3 para otros casos. Con el orden ascendente predeterminado, obtendrá el resultado que desea.