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

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

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
    ------------------------------------------------
jahy988 回答:从一个表数组获取记录,这些记录不存在于postgres的另一个表记录中

这可以通过使用表auto_data中的数组首先取消嵌套然后找到车辆表中不存在的名称来完成;

SELECT  c.vehicle_name,c.veh_id
  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);
本文链接:https://www.f2er.com/3065327.html

大家都在问