Rails order by 在 group by 之前,如何处理了

luffycn · 2015年02月10日 · 最后由 zlx_star 回复于 2015年02月10日 · 2760 次阅读
SELECT * FROM 

(
select * from `my_table` order by id asc
) as my_table_tmp

group by cat_id

order by id desc

这种 SQL,在 active record 中如何处理了?

MyTable.find_by_sql <<-SQL
  SELECT * FROM
  (SELECT * FROM `my_table` ORDER BY  id ASC) AS my_table_tmp
  GROUP BY cat_id
  ORDER BY id DESC
SQL

楼主说话好像有以“了”结尾的习惯,可能你是无意,但听起来是不太有礼貌。

@hooopo 这种方式虽然直接,可是我还需要把结果跟其它的 scope 方法联合起来使用,跟 kamirani 分页结合起来用,会报错

order by 在 group by 之前,可以使用 calculation 函数,类似于 max 之类的

# 一个思路,未验证
select max(id) as mid from `my_table` group by cat_id order by mid desc;
需要 登录 后方可回复, 如果你还没有账号请 注册新账号