我有用户表,其中包含许多字段,包括departmentid。 departmentid只是一个字符串。每个离开的用户可以拥有不同的用户。可以在不重复的情况下从用户表中找到所有离开的用户。
我试图从用户表中查找所有离开的内容,但结果包含了离开的重复项。如何解决此问题。
提前致谢...
答案 0 :(得分:3)
SQL
select distinct department_id from users
Ruby代码
User.all.map(&:department_id).compact.uniq
也在rails 3中
User.select('departement_id').uniq
答案 1 :(得分:1)
您可能希望使用sql查询让db引擎处理数学运算并避免创建ruby对象,这是更快的选择:
Department.where("id in (select distinct department_id from users)").all
现在,如果你想以轨道方式进行,你仍然可以:
Department.where(id: User.select("distinct department_id").map(&:department_id)).all
请注意,使用最后一行代码,您可以避免创建User属性的完整映射,因为您感兴趣的是department_id,并且它还避免遍历每个User对象以收集ID并生成对于uniq,通过使用select distinct,数据库引擎将只返回单个值而不重复