2012-02-17 106 views
0

嗨,大家好是更多钞票用同一查询GROUP_CONCAT和CONCAT功能我想使用使用CONCAT及GROUP_CONCAT函数在一个MySQL查询

SELECT GROUP_CONCAT(CONCAT(idmaterial,percent)) as 'material' FROM a_m where idarticle=1 

拿到导致这样的一行一列

material 
---------- 
1 5%10 6%80 1%10 

请帮我看看你的想法非常感谢这里是我的表非常感谢您的帮助

idarticle |idmaterial| percent 
    ---------- ---------- ---------- 
    1    5  10 
    ---------- ---------- ---------- 
    1    6  80  
    ---------- ---------- ---------- 
    1    1  10 
    ---------- ---------- ---------- 
    2    1  90 
    ---------- ---------- ---------- 
    2    2  10 
    ---------- ---------- ---------- 
+1

只是为了澄清,GROUP_CONCAT()用于整理多行成一个单一的分隔字符串,在你的案例所有idmaterial的idartical = 1。 CONCAT()另一方面用于将字符串连接在一起。 CONCAT在字符串上工作,所以CONCAT('string1','string2','string3')创建string1string2string3,而GROUP_CONCAT会将上面的行取回,并返回5,6,1(例如)为idarticle = 1。帮助解释差异,以及为什么他们能够一起工作:) – 2012-02-17 17:50:15

回答

3

GROUP_CONCAT去与GROUP BY

SELECT idarticle, 
    GROUP_CONCAT(CONCAT(idmaterial, '%', percent) SEPARATOR ' ') as materials 
FROM a_m 
GROUP BY idarticle 

并把一列中,你可以使用:

SELECT CAST(CONCAT(idarticle, ' ', 
    GROUP_CONCAT(CONCAT(idmaterial, '%', percent) SEPARATOR ' ')) AS CHAR) as material 
FROM a_m 
GROUP BY idarticle 
+0

非常感谢你的工作,但我得到[BLOB - 7B]结果而不是百分比值你知道什么是错的 – user961885 2012-02-17 17:43:24

+0

CAST(whateveryourfieldis AS CHAR)即CAST(CONCAT(......)AS CHAR)作为材料 – 2012-02-17 17:46:24

+0

谢谢,谢谢,谢谢... ...其工作再次感谢 – user961885 2012-02-17 17:47:11