如何构造在M:N关系中比较两组的查询?

时间:2015-07-05 13:16:34

标签: sql sqlite jpql

我有两个(三个 - 第三个是绑定表)表User和Feature。他们处于多对多的关系中。我想构建查询,查找具有与特定用户类似功能的所有用户。

我知道通常我可以使用这样的东西:

select user from User user 
inner join user.feature feature
where feature in :features

但这只适用于我只关注一个特定功能的情况。有没有办法如何在SQL中比较“两个功能”中的“功能”?或者我必须在业务层中这样做吗?

1 个答案:

答案 0 :(得分:1)

您可以使用SQL。如果我理解,您希望根据与给定用户共有的功能对其他用户进行排名。

select uf.user, count(*) as FeaturesInCommon
from user_features uf join
     user_features uf2
     on uf.feature = uf2.feature
where uf2.user = $user
group by uf.user
order by FeaturesInCommon desc;