SQL加入一对多关系 - 将多个组合成一行?

时间:2012-06-03 00:19:26

标签: mysql sql

我有一个产品表和价格表,其中产品可以有多个价格行。是否可以使用每个产品返回一行的JOIN语句,其中每个产品行的产品ID等于产品ID的价格列?

现在我有这个:

SELECT PT.*, PR.* 
FROM `products` AS PT 
RIGHT JOIN `prices` PR 
    ON PR.`product` = PT.`ID`

如果一个产品有4个价格行,我会得到4行作为回应。

1 个答案:

答案 0 :(得分:3)

查看wizzbang GROUP_CONCAT函数,它可以很好地完成你想要的(制作一个分隔符分隔的字符串)。

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

SELECT pt.`id`, 
       group_concat(pr.`price` separator ',') 
  FROM `products` AS PT  
  LEFT JOIN `prices` PR ON PR.`product` = PT.`ID`
  GROUP BY pt.`id`