使用计数交叉加入MySQL查询

时间:2015-02-11 15:40:10

标签: mysql sql

我需要一些MySQL查询的帮助。我有一个包含两列的表(usr_id和search_term)以及以下数据。

1 term1
1 term2
2 term1
2 term2
2 term3
3 term2
3 term3
4 term1
4 term3

我需要编写一个查询来生成所有可能的术语组合的列表,并报告组合发生的usr_id的总数。

term1 term2 2
term1 term3 1
term2 term3 1

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望计算具有任何给定条款对的用户数。如果用户多次使用术语,则必须小心不要过度计算。

select t1.term as term1, t2.term as term2,
       count(distinct t1.usr_id) as num_users
from table t1 join
     table t2
     on t1.usr_id = t2.usr_id and t1.term <> t2.term
group by t1.term, t2.term;