【问题标题】:Get records from one table array which are not present in another table records in postgres从一个表数组中获取不存在于 postgres 中另一个表记录中的记录
【发布时间】:2019-11-24 22:50:45
【问题描述】:

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

汽车数据

   -----------------------------------------------
    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】:

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

    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);
    

    【讨论】:

      猜你喜欢
      • 2010-12-31
      • 2010-09-26
      • 2015-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-08
      相关资源
      最近更新 更多