首页 > 解决方案 > 从数组中删除参数

问题描述

在这个列中有一个名为 Cars 的表,我有数组 [Audi, BMW, Toyota, ..., VW]

我想更新这个表并设置这个数组中没有几个元素的汽车(丰田,...,宝马)

我怎样才能得到它,我想放另一个数组并删除匹配的元素

标签: sqlarrayspostgresql

解决方案


您可以取消嵌套数组、过滤和重新聚合:

select t.*,
       (select array_agg(car)
        from unnest(t.cars) car
        where car not in ( . . . )
       ) new_cars
from t;

如果要保留原始顺序:

select t.*,
       (select array_agg(u.car order by n)
        from unnest(t.cars) with ordinality u(car, n)
        where u.car not in ( . . . )
       ) new_cars
from t

推荐阅读