SQLite GROUP_CONCAT() 函数返回一个字符串,该字符串是表达式的所有非 NULL 值的串联,其中表达式的值不为 NULL。如果提供了第二个参数,则它将用作值之间的分隔符。如果省略第二个参数,则使用逗号 , 作为分隔符。连接元素的顺序是任意的。
GROUP_CONCAT(X)
GROUP_CONCAT(X, Y)
语法
使用 GROUP_CONCAT() 函数的语法如下:
SELECT GROUP_CONCAT(column_name)
FROM table_name
WHERE condition(s);
SQLite GROUP BY 子句用于在使用一列或多列时将结果表排列到相同的组中。请注意,必须在 GROUP BY 子句中包含那些未封装在 GROUP_CONCAT() 函数中的列名。请参阅以下语法:
SELECT column1, column2, ...
GROUP_CONCAT(column_name)
FROM table_name
WHERE condition(s)
GROUP BY column1, column2, ...;
参数
column1, column2, ... | 指定未封装在 GROUP_CONCAT() 函数中的列名。它必须包含在 GROUP BY 子句中。 |
column_name | 指定需要非空值的列或表达式 |
table_name | 指定需要检索记录的表名。 |
WHERE condition | 可选。 指定条件。根据指定的条件选择记录。 |
返回值
返回一个字符串,该字符串是所有非给定表达式的 NULL 值。
示例 - 单列
考虑一个名为 Employee 的数据库表,其中包含以下记录:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
要获取包含年龄大于 25 岁的员工姓名的字符串,可以使用以下查询:
SELECT GROUP_CONCAT(Name) AS EmployeeGT25
FROM Employee
WHERE Age > 25;
这将产生如下所示的结果:
EmployeeGT25 |
---|
Jo、Kim、Ramesh、Huang |
示例 - 使用 DISTINCT
DISTICT 子句可以与 GROUP_CONCAT() 函数一起使用。例如 - 要获取包含员工不同(唯一)年龄的字符串,可以使用以下语句:
SELECT GROUP_CONCAT(DISTINCT Age) AS DistinctAge
FROM Employee;
这将产生如下所示的结果:
DistinctAge |
---|
25,24,27,30,28 |
示例 - 使用 GROUP BY
要按年龄获取员工组的名称,可以使用以下查询:
SELECT Age, GROUP_CONCAT(Name) AS EmployeeNames
FROM Employee
GROUP BY Age;
上述代码的结果将是:
Age | EmployeeNames |
---|---|
24 | Marry |
25 | John |
27 | Jo |
28 | Ramesh,Huang |
30 | Kim |