我需要有关sql查询的帮助.. 抱歉,我对sql知之甚少,而且我对英语不好。
我有这样的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 |
我希望有人可以帮助我。感谢。
答案 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
for mysql:
SELECT id,GROUP_CONCAT(data)
FROM table
GROUP BY id;
答案 1 :(得分: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
中尝试此查询答案 2 :(得分:0)
对于mysql:
group_concat是你的朋友。
此函数返回带有连接非NULL的字符串结果 一组中的值。如果没有非NULL值,则返回NULL。
SELECT id, group_concat(data) as data from my_table group by id
这会在第一个样本中生成类型的结果。第二个样本输出更复杂,
答案 3 :(得分: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