Bonjour,
je cherche quelle syntaxe sql pourrait me permettre de supprimer des lignes par rapport à d'autres lignes en fonction du champ datetime. (Si il y a X lignes d'une même personne avec quelques secondes d'écart, n'en garder qu'un seul)
Par exemple, si j'ai ces enregistrements :
id | login | datetime
1 | alain | 2014-07-18 12:00:00
2 | alain | 2014-07-18 12:00:01
3 | alain | 2014-07-18 12:00:03
4 | alain | 2014-07-18 12:04:53
5 | robert | 2014-07-18 12:06:20
6 | alain | 2014-07-18 12:15:35
Je souhaiterais enlever tous les enregistrements qui sont proches dans le temps et d'une même personne (dus à des navigateurs lents, actualisations, ...). Ici par exemple, le garderais la ligne 1, et supprimerais celles en rouge (2 et 3), mais je garderais la 4 qui arrive quelques minutes après.
C'est un ancien système de logs, que je dois améliorer, bien entendu, dans un second temps, le but sera d'éviter ce type de "presque doublons", je ne sais pas si c'est possible avec des clefs "presque-uniques" ou par exemple je dirais :
si alain s'est connecté à 12:00:00, tout enregistrement nouveau de Alain de 12:00:00 à 12:00:05 ne doit pas être inscrit.
J'ai essayé avec la fonction INTERVAL mais en vain.
Auriez-vous une idée pour ce type de problématique?
Partager