我想从一个表的数组中获取记录,而该记录不在另一表列中。以下是表格;
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
------------------------------------------------
答案 0 :(得分:0)
这可以通过使用表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);