我有用户表,其中包含许多字段,包括部门 ID。departmentid 只是一个字符串。每个部门标识可以有不同的用户。是否可以从用户表中找到所有部门标识而无需重复。
我试图从用户表中找到所有的部门ID,但结果包含重复的部门ID。如何解决这个问题。
提前致谢...
我有用户表,其中包含许多字段,包括部门 ID。departmentid 只是一个字符串。每个部门标识可以有不同的用户。是否可以从用户表中找到所有部门标识而无需重复。
我试图从用户表中找到所有的部门ID,但结果包含重复的部门ID。如何解决这个问题。
提前致谢...
SQL
select distinct department_id from users
红宝石代码
User.all.map(&:department_id).compact.uniq
也在rails 3中
User.select('departement_id').uniq
您可能希望使用 sql 查询让 db 引擎处理数学并避免创建 ruby 对象,这是更快的选择:
Department.where("id in (select distinct department_id from users)").all
现在,如果您想以 Rails 方式进行操作,您仍然可以这样做:
Department.where(id: User.select("distinct department_id").map(&:department_id)).all
请注意,使用最后一行代码,您可以避免创建 User 属性的完整映射,因为您只对 department_id 感兴趣,并且它还避免了通过每个 User 对象来收集 id 并使它们成为 uniq,通过使用 select distinct 数据库引擎将只返回单个值而不重复