Delete doublon

Delete doublon - SQL/NoSQL - Programmation

Marsh Posté le 11-04-2015 à 16:45:56    

Bonjour,
 
Je recherche a supprimer les doublon dans une base sql.
 
Pour trouver les doublon j'ai utiliser la requete suivante :  
 
SELECT   COUNT(*) AS nbr_doublon, link, username, password
FROM     Passwords
GROUP BY link, username, password
HAVING   COUNT(*) > 1
 
Celle ci fonctionne bien
 
Par contre je cherche a supprimer les doublon avec la requete :  
DELETE FROM Passwords
        SELECT MIN(id) as id, link, username, password
        FROM Passwords
        GROUP BY link, username, password
 
Mais la j'ai une erreur  :  
 
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT MIN(id) as id, link, username, password FROM Passwords ' at line 2
 
Si quelqu'un peut m'aidé sa serait sympa.
 
Merci d'avance

Reply

Marsh Posté le 11-04-2015 à 16:45:56   

Reply

Marsh Posté le 13-04-2015 à 05:16:06    

http://lmgtfy.com/?q=sql+delete


---------------
C'était vraiment très intéressant.
Reply

Marsh Posté le 14-04-2015 à 23:20:39    


 
Mecri j'ai deja regarder mais impossible de faire fonctionner le requete

Reply

Marsh Posté le 15-04-2015 à 21:34:57    

Ben forcement, puisqu'il y a une erreur de syntaxe, comme l'indique le message d'erreur que tu recois.
Erreur de syntaxe qui saute aux yeux des que tu regardes n'importe quelle doc sur les requetes DELETE de SQL.
 
Bon comme c'est tellement basique comme truc et t'as pas l'air de vouloir faire le moindre effort, voila la reponse, en gros:

DELETE FROM Passwords
WHERE id IN (
  SELECT MIN(id)
  FROM Passwords  
  GROUP BY link, username, password)


 
J'espere que tu ne fais pas d'info dans la vie, sinon reorientes toi vite (pour ton bien).


---------------
C'était vraiment très intéressant.
Reply

Marsh Posté le 15-04-2015 à 21:58:44    

Ce qui est bien quand on est hautain, c'est que la moindre erreur se voit
 
La tu efface le plus petit, même pour les lignes qui ne sont pas en double.
Au passage ce type de requete ne traitera pas le cas ou il y a des triplets ou plus


---------------

Reply

Marsh Posté le 15-04-2015 à 22:02:15    

Moi je ferai  
 
DELETE FROM Passwords  
WHERE id Not IN (  
  SELECT MIN(id)  
  FROM Passwords  
  GROUP BY link, username, password)
 
 
Not in au lieu de in
 
Qui efface tout ce qui n'est pas un min , donc les seconds, troisiemes et plus
 
Est ce que tu veux garder un exemplaire des doublons ?


---------------

Reply

Marsh Posté le 15-04-2015 à 22:36:49    

flo850 a écrit :

Moi je ferai  
 
DELETE FROM Passwords  
WHERE id Not IN (  
  SELECT MIN(id)  
  FROM Passwords  
  GROUP BY link, username, password)
 
 
Not in au lieu de in
 
Qui efface tout ce qui n'est pas un min , donc les seconds, troisiemes et plus
 
Est ce que tu veux garder un exemplaire des doublons ?


 
Merci pour ton aide oui je souhaiterai gardé un exemplaire des doublon  

Reply

Marsh Posté le 15-04-2015 à 22:37:48    

flo850 a écrit :

Ce qui est bien quand on est hautain, c'est que la moindre erreur se voit


Je vois pas trop ou je suis hautain mais bon.
Je lui file le lien vers la doc, il n'y "arrive" toujours pas, je lui explique en deux phrases le raisonnement a suivre pour trouver d'ou ca vient (et c'est dur de faire deux phrases la-dessus deja tellement c'est simple), propose meme un truc (certes faux) ainsi qu'un conseil fort judicieux pour son propre bien-etre.
Faut pas voir le mal partout hein.


---------------
C'était vraiment très intéressant.
Reply

Marsh Posté le 16-04-2015 à 00:51:41    

lasnoufle a écrit :

Ben forcement, puisqu'il y a une erreur de syntaxe, comme l'indique le message d'erreur que tu recois.
Erreur de syntaxe qui saute aux yeux des que tu regardes n'importe quelle doc sur les requetes DELETE de SQL.
 
Bon comme c'est tellement basique comme truc et t'as pas l'air de vouloir faire le moindre effort, voila la reponse, en gros:

DELETE FROM Passwords
WHERE id IN (
  SELECT MIN(id)
  FROM Passwords  
  GROUP BY link, username, password)


 
J'espere que tu ne fais pas d'info dans la vie, sinon reorientes toi vite (pour ton bien).


 
C'est du langage SQL, l'informatique est tres diversifier

Reply

Marsh Posté le 16-04-2015 à 00:55:54    

J'ai fait la requete :
 
DELETE Passwords  
FROM Passwords  
LEFT OUTER JOIN (
        SELECT MIN(id) as id, link, username, password
        FROM Passwords
        GROUP BY link, username, password
    ) AS Passwords_1  
    ON Passwords.id = Passwords_1.id
WHERE Passwords_1.id IS NULL
 
Mais j'ai l'impression qu'elle me supprime plus que les doublons sans garder une seule fois le doublon.

Reply

Marsh Posté le 16-04-2015 à 00:55:54   

Reply

Marsh Posté le 16-04-2015 à 08:27:39    

Mais pourquoi tu n'essayes pas la requête que je t'ai donné ?


---------------

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed