我有一個表product
兩列id
,pricing_category
,和我有一個查詢如何將單獨的記錄合併爲一個?
SELECT DISTINCT ppp.`id` AS productid ,ppp.`pricing_category` AS type1
FROM `product` ppp
WHERE ppp.`finish_product_id`=1
結果是:
我想這type
將在一個顯示爲type1,type2,type3
爲一個id行。我應該怎麼做?
我有一個表product
兩列id
,pricing_category
,和我有一個查詢如何將單獨的記錄合併爲一個?
SELECT DISTINCT ppp.`id` AS productid ,ppp.`pricing_category` AS type1
FROM `product` ppp
WHERE ppp.`finish_product_id`=1
結果是:
我想這type
將在一個顯示爲type1,type2,type3
爲一個id行。我應該怎麼做?
可以使用條件聚集做到這一點:
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
您可以使用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;
的可能的複製[我可以連接多個MySQL行成一個領域?](http://stackoverflow.com/questions/276927/can-i-concatenate-multiple-mysql-rows-成酮場) – tafa