You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Arel表将自定义统计结果按降序排列

按预订数量降序排列的Arel查询修改方案

要实现统计结果按预订数量降序排列,只需在原查询的链式调用末尾添加排序逻辑即可。推荐使用Arel原生语法构建排序条件,保持代码一致性同时避免SQL注入风险。

修改后的完整代码

Product.joins(
  Product.arel_table.join(Reservation.arel_table, Arel::Nodes::OuterJoin).on(
    Reservation.arel_table[:product_id].eq(Product.arel_table[:id])
  ).join_sources
).group(Product.arel_table[:id])
.select(Product.arel_table[Arel.star], Reservation.arel_table[:id].count.as('res_count'))
.order(Reservation.arel_table[:id].count.desc) # 新增的降序排序逻辑

替代方案(使用别名排序)

如果更习惯用查询中定义的res_count别名排序,也可以这样写:

.order(Arel.sql('res_count DESC'))

前者通过Arel API构建排序条件,能适配不同数据库的语法差异,是更推荐的写法;后者写法更简洁,但需要确保别名res_count在查询中已正确定义。

内容的提问来源于stack exchange,提问作者Gotey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 21:10:49