我有一个数据集,许多用户都注释了一组工件,我想知道用户直接/间接与之交互的每个其他用户。我想开发一个查询,显示每个用户和每个其他用户对他们也贡献的工件做出贡献。我的数据看起来像这样
+----------+------+
| Artifact | User |
+----------+------+
| 1 | a |
| 1 | b |
| 1 | c |
| 1 | d |
| 2 | a |
| 2 | m |
+----------+------+
因此,在这种情况下,用户a与b,c,d&进行了交互。米; b与a,c& d;并且m与
进行了互动理想情况下,它不会显示重叠(因此只显示不同的值),但如果有必要,我可以清除它们
答案 0 :(得分:2)
您可以使用GROUP_CONCAT
功能:
SELECT
t1.User, GROUP_CONCAT(DISTINCT t2.User ORDER BY t2.User)
FROM
test t1
JOIN test t2 ON (t1.Artifact = t2.Artifact AND t1.User != t2.User)
GROUP BY t1.User