mysql - MySQL如何为一张表选择多个值 "cell"

标签 mysql sql select

对于所有球员,我需要找到球员编号以及他们曾经效力过的球队号码列表。

这是表“匹配”:

+---------+--------+----------+-----+------+
| 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 的一行和团队编号(1 和 2)的列表?

最佳答案

您可以使用group_concat聚合函数:

SELECT   playerno, GROUP_CONCAT(DISTINCT teamno)
FROM     matches
GROUP BY playerno
ORDER BY playerno;

关于mysql - MySQL如何为一张表选择多个值 "cell",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54731549/

相关文章:

mysql - Show id 即使结果是空的?

c# - 为什么有些文本框不接受 Control + A 快捷方式来默认全选

php - 在sql中选择查询未检索数据库中的值

mysql - 输出数据自激活之日起一年以上

MySQL - 添加总计行和列的最简单方法

mysql:从不同列填充列中的数据

c# - 从字符串转换日期和/或时间时转换失败

sql - 如何在 SQL 中使用 "NOT LIKE"作为列值

mysql - 如何不选择另一个表中存在的值

php - 将无限播放列表(数组)保存到数据库的最佳方法? (php mysql)