Aller au contenu

Comparaison et suppression d'enregistrements suivant critère


fr3br0

Sujets conseillés

Bonjour,

Soit la table suivante comportant 2 champs ID et VALEUR

ID______VALEUR

1________10

2________20

3________27

4________30

5________31

6________40

7________42

8________50

Je désire supprimer les enregistrements dont l'écart sur VALEUR est < 10 (donc suppression des ID 3,5 et 7)

Tout ceci directement en MySql (sans traitement php)

Cela ne doit pas être compliqué ... mais je n'y parviens pas :)

Merci de vos réponses

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

Si tu veux sélectionner tous ceux dont l'écart avec le précédant est inférieur à 10, c'est ça :

SELECT t2.ID FROM matable AS t1, matable AS t2
WHERE (t1.ID + 1) = t2.ID
AND ((t2.VALEUR - t1.VALEUR) < 10)

Je te laisse deviner pour faire le DELETE.

Maintenant ça ne semble pas complètement coller à ton besoin car tu souhaites garder le 4 et le 6,

alors que l'écart est inférieur à 10 avec le précédant est bien inférieur à 10. Certes il ne l'est

plus *après* avoir supprimé les ID 3, 5 et 7 mais je ne vois pas comment faire une requête qui

puisse tenir compte de ça...

Ceci étant, si tu ne veux garder que les multiples de 10, tu t'en sors avec un modulo.

Pourrais-tu préciser l'algorithme de suppression des ID (quitte à écrire le code en php par exemple) pour

que l'on te dise si c'est réalisable en SQL pur ?

M

Lien vers le commentaire
Partager sur d’autres sites

Salut,

cela correspond parfaitement à mon besoin :)

Par contre il se peut que les ID ne soient pas forcément classées dans un ordre croissant au contraire des VALEURS qui sont très par en ordre ASCendant

Je ne sais pas si le résultat sera le même ?

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...