Problème d'incomprehension requête sql
Bonjour a tous
voici mes deux instructions qui me donne le même résultat :
Code:
1 2 3 4 5 6 7 8 9
|
SELECT DISTINCT champ1, champ2, champ3
FROM MESINFORMATIONS T1
WHERE T1.LACLE < ANY (SELECT LACLE
FROM MESINFORMATIONS T2
WHERE T1.lacle <> T2.lacle
AND T1.champ1 = T2.champ1
AND T1.champ2 = T2.champ2
AND T1.champ3 = T2.champ3) |
total doublons: 1995
Ensuite
Code:
1 2 3 4 5 6 7 8 9
|
SELECT DISTINCT champ1, champ2, champ3
FROM MESINFORMATIONS T1
WHERE EXISTS (SELECT 1
FROM MESINFORMATIONS T2
WHERE T1.lacle <> T2.lacle
AND T1.champ1 = T2.champ1
AND T1.champ2 = T2.champ2
AND T1.champ3 = T2.champ3) |
total doublons: 1995
et pour finir
Code:
1 2 3 4 5 6 7 8 9
|
DELETE
FROM MESINFORMATIONS T1
WHERE T1.LACLE < ANY (SELECT LACLE
FROM MESINFORMATIONS T2
WHERE T1.LACLE <> T2.LACLE
AND T1.CHAMP1 = T2.CHAMP1
AND T1.CHAMP2 = T2.CHAMP2
AND T1.CHAMP3 = T2.CHAMP3) |
qui supprime 1999 occurences:calim2:, je ne comprend pas ou ai je pèché ?
Ensuite je me demandait si il y avait un moyen de supprimer les doublons en spécifiant un critère, exemeple:
dans mon cas je veux supprimer champ1, champ2, champ3 qui sont en doublons es que je peux ajouter un autres champs pour restreindre la suppression : (les doublons dont le champ4 > 10)
Code:
1 2 3 4 5 6 7 8 9 10
|
DELETE
FROM MESINFORMATIONS T1
WHERE T1.LACLE < ANY (SELECT LACLE
FROM MESINFORMATIONS T2
WHERE T1.LACLE <> T2.LACLE
AND T1.CHAMP1 = T2.CHAMP1
AND T1.CHAMP2 = T2.CHAMP2
AND T1.CHAMP3 = T2.CHAMP3
AND CHAMP4 >10 ) /* ajout d'un paramètre*/ |
Merçi a tous