查询在一起寻找相似的兴趣爱好

时间:2019-10-19 02:33:10

标签: mysql relational-algebra

Name    Place visited

Ash     New york
Bob     New york
Ash     Chicago
Bob     Chicago
Carl    Chicago
Carl    Detroit
Dan     Detroit

上面是示例表。输出应该是两个一起访问过的地方的名字。即输出应该是Ash和Bob,因为Ash所访问的地方也Bob所访问。

输出:

Name1  Name2

Ash    Bob

使用MySQL甚至关系代数对此进行查询是什么?

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用group_concat()。假设没有重复,

select places, group_concat(names) as names
from (select name, group_concat(place order by place) as places
      from t
      group by name
     ) t
group by places
having count(*) > 1;

这将返回在同一行中具有完全相同位置的所有名称。名称将以逗号分隔。