这是我的SQL问题
表格 - 活动
id activity userID
0 99 1
1 99 2
2 99 3
3 88 1
4 77 2
5 77 3
我希望查询此表以生成这样的结果,该结果通过
汇集活动选择different users:
99 1 2 3
88 1
77 2 3
我的第一次尝试是使用JOIN以递归方式自行加入表。但这很头疼。有人有其他建议吗?
由于
编辑: 另一个问题。如果我想在分组之前检查用户是否是朋友呢?
表 - 朋友
id userID friendID
0 1 2
1 2 1
2 1 3
3 3 1
4 2 3
5 3 2
所以他们是朋友(两个方向)。然后我想做池化(GROUP BY),因为他们又是朋友。
再次,谢谢。你们给我很好的指导。
答案 0 :(得分:2)
select activity,GROUP_CONCAT(userID,' ') from Activity
group by activity
答案 1 :(得分:1)
select act,GROUP_CONCAT(userid,' ') from users
group by act
order by act desc
答案 2 :(得分:1)
试试这个:
CREATE TABLE myTable (id int, activity int, userID int);
INSERT INTO myTable VALUES (0, 99, 1);
INSERT INTO myTable VALUES (1, 99, 2);
INSERT INTO myTable VALUES (2, 99, 3);
INSERT INTO myTable VALUES (3, 88, 1);
INSERT INTO myTable VALUES (4, 77, 2);
INSERT INTO myTable VALUES (5, 77, 3);
SELECT activity,GROUP_CONCAT(userID,' ')
FROM mytable
GROUP BY activity
ORDER BY activity DESC;
答案 3 :(得分:1)
使用GROUP BY
活动和GROUP_CONCAT()
喜欢这段代码:
SELECT activity,GROUP_CONCAT(userID,' ') AS Groups
FROM Activity
GROUP BY activity
ORDER BY activity DESC;
答案 4 :(得分:1)
GROUP_CONCAT
:
SELECT activity,
GROUP_CONCAT(userID,' ') AS Groups
FROM Activity
GROUP BY activity
ORDER BY activity DESC;