Maison > base de données > tutoriel mysql > Comment supprimer efficacement les lignes en double d'une table SQLite sans clé primaire ?

Comment supprimer efficacement les lignes en double d'une table SQLite sans clé primaire ?

DDD
Libérer: 2025-01-05 22:21:40
original
985 Les gens l'ont consulté

How to Efficiently Remove Duplicate Rows from a SQLite Table Without a Primary Key?

Identification et suppression des lignes en double dans la base de données SQLite

Les bases de données SQLite rencontrent souvent des lignes en double, où plusieurs entrées partagent des données identiques. Dans les situations où le maintien de lignes uniques est crucial, la suppression des doublons devient essentielle. Cet article explore une méthode efficace pour supprimer les lignes en double d'une grande table SQLite sans s'appuyer sur une colonne de clé primaire.

Considérez le tableau suivant avec deux colonnes : "hash" et "d". Certaines lignes de ce tableau ont des valeurs « hash » et « d » qui correspondent. Cependant, des valeurs « d » identiques n'indiquent pas nécessairement des valeurs de « hachage » correspondantes. Pour résoudre ce problème, nous visons à conserver une seule instance de chaque ligne en double, tout en supprimant les autres.

Pour distinguer les lignes en l'absence de clé primaire, SQLite fournit la pseudo-colonne 'rowid'. Chaque ligne possède une valeur 'rowid' unique, nous permettant de les différencier. La requête suivante supprime efficacement les lignes en double en préservant le « rowid » le plus bas par combinaison unique de « hash » et « d » :

DELETE FROM YourTable
WHERE rowid NOT IN
(
  SELECT MIN(rowid)
  FROM YourTable
  GROUP BY hash, d
);
Copier après la connexion

En utilisant la colonne « rowid » à côté de « hash » et « d » regroupement, cette requête garantit que chaque combinaison unique de « hachage » et « d » conserve la ligne avec le « rowid » le plus bas. Par conséquent, les lignes en double sont effectivement supprimées du tableau.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal