suppression par SQL

17-01-2007 à 07:56:38
Bonjour,

Comment feriez-vous pour supprimer par SQL des enregistrements en double (triple ou plus) dans un fichier pour n'en garder qu'un seul ?

Tout d'abord est-ce possible ?

--Message édité par le 08-01-07 à 16:47:33--
  • Liens sponsorisés



08-01-2007 à 17:00:28
Par exemple =>

DELETE FROM T1 A

WHERE RRN( A ) NOT IN (

SELECT MAX( RRN( B ) FROM T1 B WHERE A.COLX = B.COLX)

)


--Message édité par Serge le 08-01-07 à 17:01:21--

--Message édité par Serge le 08-01-07 à 17:01:58--
09-01-2007 à 08:32:40
Merci ça marche super bien mais je n'ai pas bien compris comment ça marchait... Tu peux m'expliquer rapidement ? C'est le RRN (A) que je ne connais pas dans ce cas-là...
09-01-2007 à 12:40:50
rrn te donne le rang de l'enregistrement

test cette requete

select rrn(t1), zone1_de_t1, zone2_de_t1 from t1
09-01-2007 à 12:49:04
merci
on peut travailler éventuellement sur ce rang s'il n'y a pas de clé sur un fichier ou si on veut travailler dans l'ordre d'écriture des enregistrements ....

--Message édité par Saavik le 09-01-07 à 12:50:23--
09-01-2007 à 13:01:00
oui
17-01-2007 à 07:56:38
Pour info, si on veut afficher le rang de l'enregistrement et l'intégralité des zones du fichier T1, la syntaxe est la suivante :

select rrn(t1), t1.* from t1

On en apprend tous les jours dans ce boulot, c'est pour ça qu'on l'aime...
21-05-2014 à 15:00:52
Grâce à vous, j'ai pu apprendre beaucoup de choses intéressantes. J'espère en apprendre encore. Je vous félicite pour ces merveilleux partages. Continuez ainsi !

voyance gratuite par mail
  • Liens sponsorisés