对于所有球员,我需要找到球员编号以及他们曾参加过的球队数量的列表。
这是表格“ MATCHES”:
+---------+--------+----------+-----+------+
| MATCHNO | TEAMNO | PLAYERNO | WON | LOST |
+---------+--------+----------+-----+------+
| 1 | 1 | 6 | 3 | 1 |
| 2 | 1 | 6 | 2 | 3 |
| 3 | 1 | 6 | 3 | 0 |
| 4 | 1 | 44 | 3 | 2 |
| 5 | 1 | 83 | 0 | 3 |
| 6 | 1 | 2 | 1 | 3 |
| 7 | 1 | 57 | 3 | 0 |
| 8 | 1 | 8 | 0 | 3 |
| 9 | 2 | 27 | 3 | 2 |
| 10 | 2 | 104 | 3 | 2 |
| 11 | 2 | 112 | 2 | 3 |
| 12 | 2 | 112 | 1 | 3 |
| 13 | 2 | 8 | 0 | 3 |
+---------+--------+----------+-----+------+
我能想到的最好的方法是:
SELECT DISTINCT playerno, teamno
FROM matches
ORDER BY playerno;
结果为:
+----------+--------+
| playerno | teamno |
+----------+--------+
| 2 | 1 |
| 6 | 1 |
| 8 | 1 |
| 8 | 2 |
| 27 | 2 |
| 44 | 1 |
| 57 | 1 |
| 83 | 1 |
| 104 | 2 |
| 112 | 2 |
+----------+--------+
请注意玩家8在两支队伍中的比赛情况。我如何才能使该表格仅显示玩家8的一行和Teamno的列表(1和2)?
答案 0 :(得分:1)
您可以使用group_concat
聚合函数:
SELECT playerno, GROUP_CONCAT(DISTINCT teamno)
FROM matches
GROUP BY playerno
ORDER BY playerno;
答案 1 :(得分:1)
您可以使用group_concat
SELECT playerno, group_concat( teamno)
FROM matches
GROUP BY playerno;