1

这是我的 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)。

再次,谢谢。你们给了我很好的指导。

4

5 回答 5

2
select activity,GROUP_CONCAT(userID,' ') from Activity
group by activity
于 2012-08-07T07:59:00.937 回答
1

GROUP_CONCAT是您正在寻找的:

SELECT   activity,
         GROUP_CONCAT(userID,' ') AS Groups
FROM     Activity
GROUP BY activity
ORDER BY activity DESC;
于 2012-08-07T08:10:23.947 回答
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;
于 2012-08-07T08:02:52.953 回答
1

使用GROUP BY活动和GROUP_CONCAT()

像这样的代码:

SELECT activity,GROUP_CONCAT(userID,' ') AS Groups
FROM Activity
GROUP BY activity
ORDER BY activity DESC;

看小提琴

于 2012-08-07T08:04:49.263 回答
1
select act,GROUP_CONCAT(userid,' ') from users
group by act
order by act desc

SQL 演示在这里

于 2012-08-07T08:01:15.187 回答