我有这个密码

User.find(:all, :limit => 10, :joins => :user_points,
                :select => "users.*, count(user_points.id)", :group =>
                "user_points.user_id")

这将生成以下sql

SELECT users.*, count(user_points.id) 
FROM `users` 
INNER JOIN `user_points` 
ON user_points.user_id = users.id 
GROUP BY user_points.user_id 
LIMIT 10

是否可以使用左连接而不是内部连接,而不是使用User.find_by_sql和手动输入查询?

推荐答案

你可以试试这个

User.find(:all, limit: 10,
            joins:  "LEFT JOIN `user_points` ON user_points.user_id = users.id" ,
            select: "users.*, count(user_points.id)", 
            group:  "user_points.user_id")

Ruby-on-rails相关问答推荐

在Ruby on Rails中获取堆栈级别太深错误(&Q)

Rails版本7.1.2:当验证失败且控制器发送422状态时,JS停止工作

Rails 7中的Turbo流

关系 fields_for 上不允许的参数

从Rails中的字符串中间提取子字符串

复制我的活动时,活动描述没有复制过来

如何在测试期间为 Rails 应用程序启用 Rails.cache 会话对象

Rails - 如何从 http://example.com 重定向到 https://www.example.com

Rails Migration将字符串转换为整数?

如何在 Windows 中更新 ruby

如何为 Rails SimpleForm Select 框设置默认 Select 值

是否有与 PHP 的 isset() 等效的 Rails?

在 Controller 中调用模型方法

如何获取包含表的列名的数组

非持久 ActiveRecord 模型属性

Rails SQL 正则表达式

如何在 Rails 中设置路由的默认格式?

Rails,Docker:主机不存在:默认

Rails 3:乘客找不到Bundle 程序安装的 git gem

在 Ruby on Rails 中设置日志(log)记录级别