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
3 Réponses :
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)
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;
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
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)
veuillez reformuler, donner également des exemples de données et la sortie souhaitée