admin

GROUP BY,但从其他列获取所有值

sql

我将解释我在示例中需要做的事情。首先,我们有一个像这样的简单表,名为 table

id | name
===+=====
1  | foo
1  | bar
1  | foobar
2  | foo
2  | bar
2  | foobar

现在查询:

SELECT t.* FROM table t GROUP BY t.id

将使我们得到与这一结果相似的结果:

id | name
===+=====
1  | foo
2  | foo

但是是否有可能收集 name的 所有值来得到这样的结果?

id | name
===+=================
1  | foo, bar, foobar
2  | foo, bar, foobar

阅读 155

收藏
2021-05-10

共1个答案

admin

使用MySQL可以使用GROUP_CONCAT(expr)

此函数返回一个字符串结果,其中包含来自组的串联的非NULL值。如果没有非NULL值,则返回NULL。完整语法如下:

GROUP_CONCAT([DISTINCT] expr [,expr ...]
             [ORDER BY {unsigned_integer | col_name | expr}
                 [ASC | DESC] [,col_name ...]]
             [SEPARATOR str_val])

就像是

SELECT ID, GROUP_CONCAT(name) GroupedName
FROM Table1
GROUP BY ID
2021-05-10