2016-05-30 48 views
1

我有一個表product兩列idpricing_category,和我有一個查詢如何將單獨的記錄合併爲一個?

SELECT DISTINCT ppp.`id` AS productid ,ppp.`pricing_category` AS type1 
FROM `product` ppp 
WHERE ppp.`finish_product_id`=1 

結果是:

enter image description here

我想這type將在一個顯示爲type1,type2,type3爲一個id行。我應該怎麼做?

+1

的可能的複製[我可以連接多個MySQL行成一個領域?](http://stackoverflow.com/questions/276927/can-i-concatenate-multiple-mysql-rows-成酮場) – tafa

回答

1

可以使用條件聚集做到這一點:

SELECT t.productID, 
     MAX(CASE WHEN t.type1 = 1 THEN 1 ELSE 0 END) as type1_ind, 
     MAX(CASE WHEN t.type1 = 2 THEN 1 ELSE 0 END) as type2_ind, 
     MAX(CASE WHEN t.type1 = 3 THEN 1 ELSE 0 END) as type3_ind 
FROM YourTable t 
GROUP BY t.productID 

這是動態的,對所有的productID,而不僅僅是特定的一個。要選擇特定的一個,請將group by替換爲WHERE子句。

如果他有(1)或不(0),這將返回每種產品的指示。

因此,例如,用於數據:

PRODUCTID | Type1 
    1   1 
    1   2 
    1   3 
    2   3 

這將返回:

PRODUCTID | TYPE1_IND | TYPE2_IND | TYPE3_IND 
    1   1   1   1 
    2   0   0   1 

或者讓他們都爲一列使用GROUP_CONCAT()

SELECT t.productID, 
     GROUP_CONCAT(concat('TYPE',t.type1)) 
FROM YourTable t 
GROUP BY t.productID 
0

您可以使用GROUP_CONCAT

select id productid, 
     group_concat(concat('type', pricing_category) order by pricing_category) type 
from product 
where finish_product_id = 1 
group by id; 

SQLFiddle

相關問題