2015-09-14 23 views
1

我有数据在MySQL这样设置:从逗号创建列表在mysql中分离关键

table order 
order_id item_id   
1   A,B,C 
2   B,D,E 

table item 
item_id item_name 
A   Candy 
B   Beer 
C   Cookies 
D   Jam 
E   Cigarette 

我怎样才能返回数据是这样的:

order_id item_id item_name 
1   A,B,C  Candy,Beer,Cookies 
2   B,D,E  Beer,Cookies,Cigarette 
+0

应该不是第2行是 “啤酒,果酱,烟”? – vhu

+0

这听起来像健康的饮食,whaddya认为@vhu。只要求求非KEYWORD或RESERVED WORD的问题出现 – Drew

+0

'订单'表的设计很差。您应该考虑在订单中每个商品有一行,可能是在'order_items'表中。 –

回答

1

您可以尝试以下查询 -

SELECT o.order_id, o.item_id, GROUP_CONCAT(itm.item_name) 
FROM `order` AS o JOIN item AS itm ON FIND_IN_SET(itm.item_id,o.item_id) 
GROUP BY o.order_id; 
+0

但它没有优化的方式,你应该使用两个表关系的联结表来获得更好的性能。 –

-1

尝试......

select o.order_id, o.item_id, GROUP_CONCAT(i.item_name SEPERATOR separator ',') 
FROM order o 
INNER JOIN item i ON on (find_in_set(i.item_id,o.item_id)) 
GROUP BY o.order_id 
相关问题