Mysql 可以按组合排序吗?

Mysql 可以按组合排序吗?,mysql,ruby-on-rails,ruby-on-rails-3,activerecord,Mysql,Ruby On Rails,Ruby On Rails 3,Activerecord,在我的代码模型中,我编写了如下所示的范围 scope :recent, lambda { |n = 10| includes(:user).where('users.deleted_at' => nil).order("users.last_active_at DESC").limit(n) } 它基本上按code.users.last_active_at desc order排序 很好用。 现在,我想给它添加额外的条件 如果user.id=10000,我想使用code.created_

在我的代码模型中,我编写了如下所示的范围

scope :recent, lambda { |n = 10| includes(:user).where('users.deleted_at' => nil).order("users.last_active_at DESC").limit(n) }
它基本上按code.users.last_active_at desc order排序

很好用。 现在,我想给它添加额外的条件

如果user.id=10000,我想使用code.created_at而不是code.user.last_active_at。 因此,排序条件将是
代码。已在创建 和
编码.用户.最后一次活动时间


可能吗?如果是这样,我该如何更改代码?

在Mysql中,您可以使用
CASE
语句,但不知道ruby,但您可以通过这种方式在纯查询中使用您的逻辑

ORDER BY CASE WHEN user.id=10000
              THEN code.created_at
              ELSE code.users.last_active_at
         END
DESC