SQL:将多行值作为列连接

时间:2016-12-02 12:32:39

标签: mysql sql

我有一个包含两个不同表的数据库,第一个名为'House',并包含以下列:id, name, updated_at。我的第二个表名为'House_meta',其中包含以下列:house_id, name, value。在元表中,我有(例如)以下数据:

house_ id      name        value
1              street      123 streetname
1              color       black
1              city        chicago
1              image       image-1.jpg
1              image       image-2.jpg
1              image       image-3.jpg

我需要加入这些表格,以便每个住宅条目只在一行上。我的问题是图像,它们都需要在同一行,并且可能像image1,image2等一样输出。我当前的SQL:

SELECT 
   house.id AS house_id, 
   house.name AS housename, 
   updated_at
   max(case when house_meta.name = 'street' then house.value end) as street,
   max(case when house_meta.name = 'color' then house.value end) as color,
   max(case when house_meta.name = 'city' then house.value end) as city,
   max(case when house_meta.name = 'image' then house.value end) as image
FROM house 
   join house_meta on house.id = house_meta.house_id
group by 
   house.id

这仅(自然地)导致仅添加一个图像。我该如何做到这一点,以便所有图像最终都在一行?

我希望如何返回:

house_id    updated_at   street          color   city      image1       image2        image3
1           2016-12-02   123 streetname  black   chicago   image-1.jpg  image-2.jpg   image-3.jpg

1 个答案:

答案 0 :(得分:0)

您必须进行动态数据透视查询。请参考此链接,它将为您提供帮助

Like of Dynamic Pivot