Mysql - 分组1到多个连接

时间:2016-05-17 20:54:22

标签: mysql

使用下表:

products
product_id  |  name
1           |  Jeans
2           |  t-shirt

options
option_id   | product_id | option_name |  option_value
1           | 1          | size        |  32
2           | 1          | colour      |  blue
3           | 1          | price       |  100
4           | 2          | colour      |  red

我想对产品运行查询并返回包含产品数据和该产品选项的单行。问题是产品和选项之间的一对多关系。

这可能无论如何可能将它们分组或在每个选项的结果中有多个列吗?

1 个答案:

答案 0 :(得分:0)

使用GROUP_CONCAT

SELECT p.product_id, p.name, GROUP_CONCAT(CONCAT(o.option_name, ' ', o.option_value)) AS options
FROM products AS p
LEFT JOIN options AS o ON p.product_id = o.product_id
GROUP BY p.product_id

我使用LEFT JOIN,因此仍会列出没有选项的产品(空options列)。如果您不想在结果中看到这些产品,请使用INNER JOIN