Mysql - 合并两个表

时间:2014-11-25 14:18:06

标签: mysql join

我在两个表格中获得了数据:

表产品

ID | title
1  | T-shirt
2  | Pants
...

和表格详情

productID | key | value
1         | color | green
1         | size  | M
1         | size  | L
2         | color | white
2         | color | black
2         | brand | n/a
...

因此,表中的每个产品都有很多细节。我想编写SQL给我结果:

ID | title   | color       | size | brand
1  | T-shirt | green       | M,L  |
2  | Pants   | white,black |      | n/a

现在我的第一个SQL是:

SELECT * FROM products;

然后每次调用while循环:

SELECT * FROM details WHERE productID={id}

然后将数据合并在一起。可能有一个简单的方法吗? 谢谢!

编辑: 数据导入到mysql,我不知道每个产品的所有细节(如果我知道,我会在产品表中添加一些额外的列)。细节每天都在变化。

2 个答案:

答案 0 :(得分:2)

我会使用条件聚合和group_concat()

来完成此操作
select p.id, p.title,
       group_concat(case when key = 'color' then value end) as colors,
       group_concat(case when key = 'size' then value end) as sizes,
       group_concat(case when key = 'brand' then value end) as brands
from products p join
     details d
     on p.id = d.productid
group by p.id, p.title;

答案 1 :(得分:-1)

据我所知,你想要一个包含两个表数据的结果表的问题:

select products.ID, products.title, details.* 
from products
inner join details
on details.productID = products.ID;