mysql - 如何使用group by实现串联

标签 mysql sql sql-server

假设有一个名为“a”的表,其中包含以下数据:

col1, col2
-----------
1     1
1     2
1     3
2     2
2     3
3     4

然后达到以下结果:

col1, col2
--------------
1     6
2     5
3     4

我可以运行如下查询:

从 col1 的组中选择 col1, sum(col2)。

但假设我的 table 是:

col1, col2
---------
1     a
1     b 
1     c
2     d
2     e
3     f

这里col2是varchar类型而不是numeric类型。

给出以下结果的sql查询是什么???

col1,  col2
------------
1     a,b,c
2     d,e
3     f

我已经在 col1 上尝试过 group by 但如何连接 col2 中的值???

问题是col2是varchar类型。

最佳答案

如果是MySQL,您可以使用GROUP_CONCAT,如下所示:

SELECT 
  col1,
  GROUP_CONCAT(col2) as col2
FROM demo
GROUP BY col1;

这是sqlfiddle .

如果是SQL Server,您可以使用STUFF,如下所示:

SELECT t1.col1,
    stuff((SELECT ',' + CAST(t2.col2 as VARCHAR(10))
     FROM demo t2 WHERE t1.col1 = t2.col1
     FOR xml path('')),1,1,'') col2
FROM demo t1
GROUP BY t1.col1;

这是sqlfiddle .

关于mysql - 如何使用group by实现串联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29458336/

相关文章:

mysql - 找出哪个数据库条目已更改

sql - 如何在Oracle中四舍五入到下一个10?

sql - 在 SQL Server 中使用 2 个不同的列分组

sql-server - SQL 对 SQL Server 2008 Express 的依赖

Mysql多变量线性回归

php - Cakephp 3 中带有子查询的 mysql FROM 子句

sql - 语法错误 AUTO_INCREMENT

sql-server - 如何获取 MS SQL Server 2005 的登录历史记录

sql-server - 如何使用SSIS读取Excel电子表格中的变量值

mysql - 如何修复错误代码 1241 : Operand should contain 1 column(s) in mysql query?