首页 > 解决方案 > 访问列数组并将其存储在新表中

问题描述

我有一张这样的桌子:

| id | cars                     |      owner     |
|----|--------------------------|----------------|
|  1 | {tesla, bmw, mercedes}   | Chris Houghton |
|  2 | {toyota, bmw, fiat}      | Matt Quinn     |

有没有办法访问汽车表数组 DISTINCT 值并将它们存储在没有重复值的新表中?

我想要这张桌子

| brands |
|--------|
|  tesla |
|  bmw   |
|mercedes|
| toyota |
|  fiat  |

标签: postgresqlpgadmin

解决方案


我相信您正在寻找这种声明。

SELECT 
 DISTINCT 
  table_array.array_unnest
FROM (
  SELECT 
   UNNEST(cars)
  FROM 
   <table>
) AS table_array(array_unnest)

演示

这确实有效,但我如何将它们存储在例如制造商表的“品牌”列中。

INSERT INTO 
 Manufactures 
(brand)
SELECT 
  DISTINCT 
    table_array.array_unnest
  FROM (
    SELECT 
      UNNEST(cars)
    FROM 
     <table>
  ) AS table_array(array_unnest)

演示


推荐阅读