如何使用group by实现连接

时间:2015-04-05 14:29:44

标签: 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)。

但假设我的桌子是:

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

此处col2的varchar类型不是数字类型。

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

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

我在col1上尝试了group by但是如何在col2 ???中连接值

问题是col2是varchar类型。

3 个答案:

答案 0 :(得分:1)

如果是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

答案 1 :(得分:0)

您可以在mysql中使用group_concat函数

select 
col1,
group_concat(col2) as col2
from table_name
group by col1

答案 2 :(得分:0)

这是一个很好的例子,我在编制时间表时遇到了类似的问题(工作示例:www.oldiesplus.com/schedule /)

以下是我的问题的链接:https://stackoverflow.com/a/27047139