2012-02-17 73 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