Dans les bases de données, les données en double sont souvent l'un des objets que nous devons supprimer. La base de données Oracle propose plusieurs façons de supprimer les données en double, et cet article en présentera plusieurs.
Les contraintes UNIQUE sont un mécanisme utilisé par la base de données Oracle pour garantir que les colonnes de chaque table stockent des valeurs uniques. Si nous souhaitons supprimer les données en double dans la table, nous pouvons ajouter des contraintes UNIQUE sur les colonnes qui doivent être dédupliquées, puis insérer des données via l'instruction INSERT IGNORE ou REPLACE INTO. Lors de l'insertion, si des données en double sont trouvées, elles seront ignorées ou remplacées par de nouvelles données.
Par exemple, nous avons un tableau appelé étudiants, qui contient les numéros et noms des étudiants. Si nous voulons garantir l'unicité de la carte d'étudiant, nous pouvons utiliser l'instruction suivante :
ALTER TABLE students ADD CONSTRAINT unique_stu_id UNIQUE (stu_id);
Dans cette instruction, nous ajoutons une contrainte UNIQUE à la table des étudiants pour garantir l'unicité des données dans la colonne stu_id.
ROWID est une colonne très spéciale dans la base de données Oracle, qui peut identifier de manière unique chaque ligne de données. Nous pouvons supprimer les données en double via ROWID. Voici un exemple d'utilisation de ROWID pour supprimer les données en double :
DELETE FROM students WHERE ROWID NOT IN (SELECT MAX (ROWID) FROM students GROUP BY stu_id, name);
Dans cette instruction, nous utilisons une sous-requête pour trouver la ligne de données avec la plus grande valeur ROWID dans chaque combinaison stu_id et nom répétée, puis la conservons, supprimons le données restantes.
L'utilisation de tables temporaires pour supprimer les données en double est une autre méthode fréquemment utilisée. Nous devons d'abord créer une table temporaire, puis insérer les données qui doivent être dédupliquées dans la table temporaire, puis supprimer les données de la table d'origine et enfin réinsérer les données de la table temporaire dans la table d'origine. Cette méthode peut garantir l’intégrité et la cohérence des données, mais elle prend plus de temps et d’espace.
Ce qui suit est un exemple d'utilisation d'une table temporaire pour supprimer les données en double :
CREATE TABLE students_new AS SELECT DISTINCT * FROM students; TRUNCATE TABLE students; INSERT INTO students SELECT * FROM students_new; DROP TABLE students_new;
Dans cette instruction, nous créons une table temporaire nommée Students_new, insérons les données dédupliquées de la table Students dans la table temporaire, puis effaçons les données. dans la table des étudiants, et enfin réinsérer les données de la table temporaire dans la table des étudiants pour terminer l'opération de déduplication.
CTE (Common Table Expression) est une méthode qui peut définir une table temporaire dans une instruction SQL. Grâce à CTE, nous pouvons terminer l'opération de déduplication des données en une seule instruction SQL. Voici un exemple d'utilisation de CTE pour supprimer les données en double :
WITH CTE AS ( SELECT stu_id, name, ROW_NUMBER() OVER (PARTITION BY stu_id, name ORDER BY ROWID) RN FROM students ) DELETE FROM CTE WHERE RN > 1;
Dans cette instruction, nous utilisons le mot-clé WITH pour définir une table temporaire nommée CTE, puis utilisons la fonction ROW_NUMBER pour numéroter chaque ligne de données en fonction de stu_id et de son nom. , et enfin supprimez les données dont les numéros de ligne sont supérieurs à 1 pour terminer l'opération de déduplication.
Les méthodes ci-dessus peuvent supprimer efficacement les données en double dans la base de données Oracle. La méthode à choisir dépend de la situation et des besoins réels. Par exemple, si nous voulons supprimer rapidement une petite quantité de données en double, nous pouvons utiliser la deuxième méthode ; si la quantité de données est importante, nous pouvons utiliser la troisième méthode ou la quatrième méthode. En bref, nous devons choisir la méthode la plus appropriée pour supprimer les données en double en fonction de la situation réelle, et nous devons effectuer une sauvegarde et des tests avant de supprimer les données afin d'éviter la perte de données et les erreurs opérationnelles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!