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

luffycn · February 10, 2015 · Last by zlx_star replied at February 10, 2015 · 2760 hits
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;
You need to Sign in before reply, if you don't have an account, please Sign up first.