访问列数组并将其存储在新表中

时间:2019-04-04 22:25:30

标签: postgresql pgadmin

我有一张这样的桌子:

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

是否可以访问汽车表数组的DISTINCT值并将其存储在没有重复值的新表中?

我想要这张桌子

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

1 个答案:

答案 0 :(得分:2)

我相信您正在寻找这种说法。

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

请参阅demo

  

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

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

请参阅demo