PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

trilhos classificar por ordem específica


Como 3, 4, 2 não é uma ordem sequencial, deve haver uma condição personalizada para ordená-los corretamente, você pode fazê-lo usando o CASE WHEN expressão .
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)

Que dará 0 quando users_count = 3 , 1 quando users_count = 4 e 3 para outros casos. Com a ordem ascendente padrão, você obterá o resultado desejado.