SQL最大匹配条目

时间:2012-08-07 07:54:08

标签: mysql sql

这是我的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),因为他们又是朋友。

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

5 个答案:

答案 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

SQL DEMO HERE

答案 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;

SEE THE FIDDLE

答案 4 :(得分:1)

您正在寻找

GROUP_CONCAT

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