2016-09-14 84 views
-3

我需要关于sql查询的帮助.. 对不起,但我不太了解sql,而且我对英语不好。从1个表中获取2个或更多数据

我有这样的SQL表。

| ID | Data | 
| 1 | abc | 
| 1 | def | 
| 1 | ghi | 
| 2 | jkl | 
| 2 | mno | 
| 3 | pqr | 
| 3 | stq | 

,我想造成这样

| ID |  Data  | 
| 1 | abc, def, ghi | 
| 2 | jkl, mno  | 
| 3 | stq, def  | 

或类似这样的

| ID | Data1 | Data2 | Data3 | 
| 1 | abc | def | ghi | 
| 2 | jkl | mno | 
| 3 | pqr | stq | 

我希望有人能帮助我。谢谢。

+3

您使用SQL-Server或MySQL的。 – Nebi

+0

几个提示,让你可以尝试自己。您可以使用case/group –

+1

research'group by'和'group_concat'...祝您好运 –

回答

0

对于MySQL:

group_concat是你的朋友。

该函数返回一个字符串结果,其中包含来自一个组的连接的非NULL 值。如果没有非NULL值,它将返回NULL。

SELECT id, group_concat(data) as data from my_table group by id 

这产生第一个样品中的类型的结果。第二个示例输出更加复杂,

+0

@Suraz @Suraz我错过了这个事实,它被标记为SQL服务器和mysql – e4c5

+0

group_concat是没有人的朋友:-( – Strawberry

+0

哦,我很抱歉浪费你的时间.. 这是我的随机工作,我不对此很了解.. 谢谢你的回答,这就是我需要的.. –

2

对于SQL Server:

select id, 
stuff((select ','+data from #temp t2 where t1.id=t2.id for xml path ('')),1,1,'') as val from #temp t1 
group by id 

为MySQL:

SELECT id,GROUP_CONCAT(data) 
FROM table 
GROUP BY id; 
+0

@Suraz:没有在SQLServer没有组concat – TheGameiswar

+0

没错,你已经在两个sql服务器和MySQL,对不起,我没有注意到 – Susang

0

使用东西功能

DECLARE @tbl1 AS TABLE 
(
    Id INT, 
    Data VARCHAR(50) 
) 


INSERT INTO @tbl1 VALUES(1,'abc') 
INSERT INTO @tbl1 VALUES(1,'def') 
INSERT INTO @tbl1 VALUES(1,'ghi') 
INSERT INTO @tbl1 VALUES(2,'jkl') 
INSERT INTO @tbl1 VALUES(2,'mno') 
INSERT INTO @tbl1 VALUES(3,'pqr') 
INSERT INTO @tbl1 VALUES(3,'stu') 

SELECT 
    Id, 
    (
     SELECT 
     STUFF 
     ( 
      (
       SELECT 
        ',' + Data 
       FROM @tbl1 B        
       WHERE A.Id=B.Id        
       FOR XML PATH('') 
      ), 
      1, 1, '' 
     ) 
    ) AS Data 
FROM @tbl1 A 
GROUP By A.Id 
2

尝试下面的查询,它应该工作

select 
    t1.id, 
    Data=STUFF((select ', '+t2.Data from test t2 where t1.id=t2.id for xml path('')),1,2,'') 
    from test t1 
    group by t1.id 

我尝试此查询的SQL Server

相关问题