假设我们有以下的表格:
+----+-------+-------+-------+
| id | name | score1 | score2 |
+----+-------+-------+-------+
| 1 | Alice | 90 | 80 |
| 1 | Alice | 85 | 70 |
| 2 | Bob | 95 | 92 |
| 3 | Carol | 80 | 75 |
| 3 | Carol | 75 | 70 |
| 3 | Carol | 87 | 90 |
+----+-------+-------+-------+
我们想将其转换为以下格式:
+----+-------+-----------------------------------+-----------------------------------+
| id | name | scores1 | scores2 |
+----+-------+-----------------------------------+-----------------------------------+
| 1 | Alice | "90, 85" | "80, 70" |
| 2 | Bob | "95" | "92" |
| 3 | Carol | "80, 75, 87" | "75, 70, 90" |
+----+-------+-----------------------------------+-----------------------------------+
可以使用以下 SQL 查询来实现:
SELECT id, name,
GROUP_CONCAT(score1 ORDER BY score1 DESC SEPARATOR ', ') AS scores1,
GROUP_CONCAT(score2 ORDER BY score2 DESC SEPARATOR ', ') AS scores2
FROM table_name
GROUP BY id, name;
为了得到字符串拼接,我们使用了 MySQL 提供的 GROUP_CONCAT
函数。它将每个组内列的值连接为一个字符串,并使用指定的分隔符分隔它们。
根据需要,使用 ORDER BY
来使拼接后的字符串按照指定列的顺序进行排列。
最后,我们按照 id
和 name
列进行组合,并使用 GROUP BY
子句来分组数据。