une - supprimer un champ sql




PostgresSQL comment supprimer les valeurs dupliquées (2)

Je pense que vous demandez ceci:

DELETE FROM tablename WHERE id IN (SELECT id FROM (SELECT id, ROW_NUMBER() OVER (partition BY column1, column2, column3 ORDER BY id) AS rnum FROM tablename) t WHERE t.rnum > 1);

J'ai une table dans ma base de données Postgres où j'ai oublié d'insérer un index unique. à cause de cet index que j'ai maintenant dupliqué des valeurs. Comment supprimer les valeurs dupliquées? Je veux ajouter un index unique sur les champs translationset_Id et la clé.


Il semble que vous souhaitiez uniquement supprimer les enregistrements qui sont en double par rapport à la colonne translationset_id . Dans ce cas, nous pouvons utiliser la fonctionnalité de numéro de ligne de Postgres pour distinguer les lignes en double, puis supprimer ces doublons.

WITH cte AS
(
    SELECT t.*, ROW_NUMBER() OVER (PARTITION BY translationset_id, key) AS rnum
    FROM yourTable t
)

DELETE FROM yourTable
WHERE translationset_id IN (SELECT translationset_id FROM cte WHERE rnum > 1)




duplicates