Sql 从数组中删除参数

Sql 从数组中删除参数,sql,arrays,postgresql,Sql,Arrays,Postgresql,有一个表w/列,称为“汽车”,在这个列中我有数组[奥迪,宝马,丰田,…,大众] 我想更新这张表,设置没有丰田、宝马阵列元素的汽车 如何获得它,我想放置另一个数组并删除匹配的元素也许我可以帮助在python中使用pandas。假设,您希望删除包含要删除的元素的所有行。假设df是您的数据帧 import pandas as pd vals_to_delete = df.loc[(df['cars']== 'Audi') | (df['cars']== 'VW')] df = df.drop(va

有一个表w/列,称为“汽车”,在这个列中我有数组[奥迪,宝马,丰田,…,大众]

我想更新这张表,设置没有丰田、宝马阵列元素的汽车


如何获得它,我想放置另一个数组并删除匹配的元素

也许我可以帮助在python中使用pandas。假设,您希望删除包含要删除的元素的所有行。假设df是您的数据帧

import pandas as pd

vals_to_delete = df.loc[(df['cars']== 'Audi') | (df['cars']== 'VW')]

df = df.drop(vals_to_delete)
或者你也可以这样做

df1 = df.loc'[(df['cars']!= 'Audi') | (df['cars']!= 'VW')]
在sql中,您可以使用

DELETE FROM table WHERE Cars in ('Audi','VW);

您可以取消阵列、筛选和重新聚集:

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
您可以多次调用array_remove:

SELECT array_remove(
          array_remove(
             ARRAY['Audi', 'BMW', 'Toyota', 'Opel', 'VW'],
             'Audi'
          ),
          'BMW'
       );

   array_remove   
------------------
 {Toyota,Opel,VW}
(1 row)

请重新措辞,同时提供样本数据和所需输出,以获得答案。但我还有另一个任务,我想要更新表,最终结果看起来像是更新表set cars=result.new_cars from select t.*,选择array_aggcar from unnestable.cars cars where car not in。。。来自t的新车辆作为结果,其中result.id=cars.id