【问题标题】:Mysql - merge two tablesMysql - 合并两个表
【发布时间】:2014-11-25 14:18:05
【问题描述】:

我有两个表中的数据:

餐桌用品

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,我不知道每个产品的所有详细信息(如果我知道的话,我会在产品表中添加一些额外的列)。细节每天都在变化。

【问题讨论】:

  • 你需要在你的表结构上做一些工作。这将帮助您更好地操纵结果。
  • 为什么要合并这两个表?
  • 你需要了解3NF

标签: mysql join


【解决方案1】:

我会使用条件聚合和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;

【讨论】:

    【解决方案2】:

    据我了解,您想要一个包含两个表中数据的结果表:

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

    【讨论】:

      猜你喜欢
      • 2011-04-11
      • 2015-01-31
      • 2010-10-18
      • 2012-11-08
      • 2020-07-29
      • 2015-11-08
      • 1970-01-01
      相关资源
      最近更新 更多