0
votes

Supprimer les arguments du tableau

Il y a un tableau w / colum appelé Cars dans cette colonne I have array [Audi, BMW, Toyota, ..., VW]

Et je veux mettre à jour ce tableau et définir des voitures sans quelques éléments de ce tableau (Toyota, ..., BMW)

Comment puis-je l'obtenir, je veux mettre un autre tableau et supprimer les éléments qui correspondent


1 commentaires

veuillez reformuler, donner également des exemples de données et la sortie souhaitée


3 Réponses :


0
votes

Peut-être que je peux vous aider à utiliser les pandas en python. En supposant que vous souhaitiez supprimer toutes les lignes contenant les éléments que vous souhaitez supprimer. Disons que df est votre dataframe, alors,

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

ou tu pourrais aussi faire

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

Dans SQL, vous pouvez utiliser

import pandas as pd

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

df = df.drop(vals_to_delete)


0 commentaires

1
votes

Vous pouvez annuler l'imbrication du tableau, filtrer et réagréger:

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

Si vous souhaitez conserver la commande d'origine:

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


1 commentaires

Merci pour une réponse. mais j'avais une autre tâche, je voulais la table de mise à jour et le résultat final ressemble à la update table set "cars" = result.new_cars from ( select t.*, (select array_agg(car) from unnest(table.cars) car where car not in (...) ) new_cars from t ) as result where result.id = cars.id à update table set "cars" = result.new_cars from ( select t.*, (select array_agg(car) from unnest(table.cars) car where car not in (...) ) new_cars from t ) as result where result.id = cars.id



0
votes

Vous pouvez appeler array_remove plusieurs fois:

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

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


0 commentaires