从一个表数组中获取记录,这些记录在postgres的另一个表记录中不存在

问题描述 投票:0回答:1

我想从一个表的数组中获取记录,而该记录在另一表列中不存在。以下是表格;

automobile_data

   -----------------------------------------------
    veh_id |             vehicle_types              
    --------+---------------------------------------
        1  | {"byd_tang","laferrari"} 
        2  | {"sonata","jaguarxf"}        
        3  | {"swift","teslax","mirai"}              
        4  | {"volt","viper"}                        
        5  | {"ferrariff","bmwi8"}   
    ------------------------------------------------

车辆

   -----------------------------------------------
     vehicle_name |  id              
   ------------------------------------------------
      byd_tang    |   1
      laferrari   |   1     
      sonata      |   2         
      jaguarxf    |   2                  
       swift      |   3
      teslax      |   3  
   ------------------------------------------------

需要以下输出;

    -----------------------------------------------
     vehicle_name | veh_id              
    ------------------------------------------------
      mirai       |   3
      volt        |   4    
      viper       |   4         
      ferrariff   |   5                
      bmwi8       |   5
    ------------------------------------------------
arrays postgresql-9.6
1个回答
0
投票

这可以首先使用表auto_data中的数组嵌套,然后找到车辆表中不存在的名称;

SELECT c.veh_id, c.vehicle_name
  FROM
   (
    SELECT veh_id, unnest("vehicle_types") as vehicle_name
    FROM automobile_data
    ) c  where not exists 
( SELECT FROM vehicle
      where vehicle_name = c.vehicle_name);
© www.soinside.com 2019 - 2024. All rights reserved.