SQL 分组查询并把结果连接成字符串解决思路
SQL 分组查询并把结果连接成字符串
Keywords f_sourceID
A 1
A 2
B 2
B 1
C 1
C 2
C 3
转化成
Keywords f_sourceID
A 1,2
B 1,2
C 1,2,3
我用的是
select Keywords,STUFF(
(select ','+f_sourceID
FROM clear a
WHERE b.Keywords =a.Keywords
FOR XML PATH('')),1,1,'')f_sourceID
FROM clear b
group by Keywords
但是我要处理的数据有上万行,处理速度很慢,50分钟才1300,有没有效率高点的方法呢?
我是菜鸟,请大家帮忙看下~多谢
------解决思路----------------------
试下游标,只需要 分组一次,遍历一次~~
------解决思路----------------------
造了1万数据,结果毫无延迟。
下面的查询要多久?
你在这个test表达式上做字符串连接试试。
Keywords f_sourceID
A 1
A 2
B 2
B 1
C 1
C 2
C 3
转化成
Keywords f_sourceID
A 1,2
B 1,2
C 1,2,3
我用的是
select Keywords,STUFF(
(select ','+f_sourceID
FROM clear a
WHERE b.Keywords =a.Keywords
FOR XML PATH('')),1,1,'')f_sourceID
FROM clear b
group by Keywords
但是我要处理的数据有上万行,处理速度很慢,50分钟才1300,有没有效率高点的方法呢?
我是菜鸟,请大家帮忙看下~多谢
------解决思路----------------------
试下游标,只需要 分组一次,遍历一次~~
------解决思路----------------------
WITH clear AS (
SELECT *
FROM ( SELECT CHAR(number) keywords
FROM master..spt_values
WHERE type = 'p'
AND number BETWEEN 65 AND 90
) a,
( SELECT Convert(varchar(11),number) f_sourceID
FROM master..spt_values
WHERE type = 'p'
AND number BETWEEN 1 AND 385
) b
)
select Keywords,STUFF(
(select ','+f_sourceID
FROM clear a
WHERE b.Keywords =a.Keywords
FOR XML PATH('')),1,1,'')f_sourceID
FROM clear b
group by Keywords
造了1万数据,结果毫无延迟。
下面的查询要多久?
你在这个test表达式上做字符串连接试试。
WITH test AS (
SELECT keywords, f_sourceID
FROM clear
ORDER BY keywords, f_sourceID
)
SELECT * FROM test