mysql – 如何通过多个元组(行)找到共享一个属性(列)的对?
发布时间:2020-12-11 23:47:01 所属栏目:MySql教程 来源:网络整理
导读:我试图在这个简化的例子中找到喜欢同一组电视节目的用户对 假设我有一张桌子,每个用户都可以获得他们喜欢的每个电视节目的参赛作品: |USER | Show ||-----|-------------||001 | Lost ||001 | South Park ||002 | Lost ||003 | Lost ||003 | South Park ||0
我试图在这个简化的例子中找到喜欢同一组电视节目的用户对 假设我有一张桌子,每个用户都可以获得他们喜欢的每个电视节目的参赛作品:
然后我想得到一个结果:
或者更好的版本是:
基本上说:用户1喜欢与用户3相同的节目集. 我一直在玩GROUP BY和JOIN,但我仍然找不到答案:(. 到目前为止,我发现使用了
这产生了成对的用户和他们共同的展示.但我不知道从哪里开始. 最佳答案 如果您可以接受CSV而不是列表结果,则可以简单地将表分组两次:
否则,您可以将以上子查询加入到自身:
在sqlfiddle上看到它们. 当然,如果保证在Shows表中不存在重复(User,Show)对,则可以通过从GROUP_CONCAT()聚合中删除DISTINCT关键字来提高性能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |