Rails4 中,如何对 Active Record 两个结果集取并集?
假设你的 model 是User
data_set1 = xxx.users
data_set2 = yyy.users
User.from("(#{data_set1.to_sql} UNION ALL #{data_set2.to_sql}) as users")
#2 楼 @huacnlee 感谢,我的是 or 的合并,我的是 rails4.2,没有 or 这个方法,用了 where_or 这个 gem,但我的查询比较复杂,解决不了,最后用的@piecehealth 方案。
用OR
的场景仅限于两个结果集都来自同样的超集,比如同一张表,或者同一个通过JOIN
获得的结果集,这种情况其实就不是取并集了。
如果两个结果集来自不同的超集,这种情况才叫取并集,要用UNION ALL
。
比如想得到对一本书或一部电影感兴趣的人,可以book.fans UNION ALL film.fans
,用OR
实现的话就困难一些了