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 );
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!