Bonjour à tous !
Quelqu'un sait-il comment supprimer les doublons d'une table avec sqlite ??
Pour info, j'utilise SQLite 3 implémenté dans Python 2.4 grâce au module pysqlite2.
Merci !
Bonjour à tous !
Quelqu'un sait-il comment supprimer les doublons d'une table avec sqlite ??
Pour info, j'utilise SQLite 3 implémenté dans Python 2.4 grâce au module pysqlite2.
Merci !
regarde ce tutoriel :
http://sqlpro.developpez.com/cours/doublons/
c'est des explications générales pour n'importe quel type de base de données donc tu devras regarder les différentes méthodes proposées pour voir ce qui est le plus rapide avec SQLite
... petit patapon
Bonjour,
Toujours selon le tutoriel http://sqlpro.developpez.com/cours/doublons/
je pense que la solution "2.1.2. Utilisation d'une fonction de ranking" est la plus efficace. Elle demande cependant quelques aménagements pour SQLite :
1) le jeu de test
2) Les doublons
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 DROP TABLE IF EXISTS T_DOUBLON; CREATE TABLE T_DOUBLON (NUM INT, NOM VARCHAR(32), PRENOM VARCHAR(16)); INSERT INTO T_DOUBLON VALUES (33, 'DUPONT', 'marc'); INSERT INTO T_DOUBLON VALUES (33, 'DUPONT', 'marc'); INSERT INTO T_DOUBLON VALUES (33, 'DUPONT', 'marc'); INSERT INTO T_DOUBLON VALUES (47, 'DUPOND', 'alain'); INSERT INTO T_DOUBLON VALUES (59, 'DUPOND', 'alain'); INSERT INTO T_DOUBLON VALUES (65, 'Dupond', 'Frédéric'); INSERT INTO T_DOUBLON VALUES (78, 'DUPOND', 'frédéric'); INSERT INTO T_DOUBLON VALUES (81, 'DUPOND', 'fréd'); INSERT INTO T_DOUBLON VALUES (99, 'DUPON', 'éric') ;
3) La suppression des doublons
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 .mode tabs select 'Lignes :' || count(*) from T_DOUBLON; select 'Doublons absolus :'; SELECT COUNT(*) AS NBR_DOUBLES, NUM, NOM, PRENOM FROM T_DOUBLON GROUP BY NUM, NOM, PRENOM HAVING COUNT(*) > 1;
++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 DELETE FROM T_DOUBLON WHERE T_DOUBLON.rowid > (SELECT rowid FROM T_DOUBLON T2 WHERE T_DOUBLON.rowid <> T2.rowid AND T_DOUBLON.NUM = T2.NUM AND T_DOUBLON.NOM = T2.NOM AND T_DOUBLON.PRENOM = T2.PRENOM); select 'Doublons absolus apres suppression :'; SELECT COUNT(*) AS NBR_DOUBLES, NUM, NOM, PRENOM FROM T_DOUBLON GROUP BY NUM, NOM, PRENOM HAVING COUNT(*) > 1; select 'Lignes :' || count(*) from T_DOUBLON;
Code : Sélectionner tout - Visualiser dans une fenêtre à part DELETE FROM table WHERE pKey NOT IN (SELECT MAX(pKey) FROM table GROUP BY champDeComparaison);
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager