POSTGRESQL:如何在数组列上联接表?

时间:2019-03-27 10:57:29

标签: postgresql

我想请您帮忙创建一个PostgreSQL查询,以便我可以离开联接类别和产品表,并用实际的产品名称替换产品编号。

下面您将看到查询的表结构和所需的输出

类别表:

              name               |              productnums                                 
---------------------------------+------------------------------
 Books                           | {605,614,663,647,645,619,627}
 Kitchen                         | {345,328}
 Electronics                     | {145,146}

产品表:

              id                 |              name                                 
---------------------------------+----------------------
 145                             | LCD Monitor
 147                             | Mouse
 345                             | Glass

所需的输出:

              name               |              productnums                                 
---------------------------------+-------------------------------------------
 Electronics                     | {LCD Monitor,Mouse}

我将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以在联接条件下使用ANY运算符,然后使用array_agg来汇总产品名称。

select c.name, 
       array_agg(p.name) as products
from categories c 
   left join products p on p.id = any(c.productnums)
group by c.name;