bonjour,
peut on récuperer facilement la premiere ligne si il y a un doublon dans une table ?
car fetch first c'est uniquement pour les curseur ?
ex :
A 2 01/01/2006
A 6 01/01/2006
B 3 01/01/2006
avoir :
A 2 01/01/2006
B 3 01/01/2006
merci
bonjour,
peut on récuperer facilement la premiere ligne si il y a un doublon dans une table ?
car fetch first c'est uniquement pour les curseur ?
ex :
A 2 01/01/2006
A 6 01/01/2006
B 3 01/01/2006
avoir :
A 2 01/01/2006
B 3 01/01/2006
merci
On peut lire les lignes une par une, mais on ne peut pas supprimer une seule ligne d'un doublon par un DELETE simple, si il y a plusieurs lignes identiques. Pour ce faire il faut supprimer avec CURRENT OF
Démo :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 CREATE TABLE T_TEST_DOUBLON_FETCH (COL INT) INSERT INTO T_TEST_DOUBLON_FETCH VALUES (1) INSERT INTO T_TEST_DOUBLON_FETCH VALUES (1) INSERT INTO T_TEST_DOUBLON_FETCH VALUES (2) DECLARE @I INT DECLARE C_TDF CURSOR FOR SELECT COL FROM T_TEST_DOUBLON_FETCH OPEN C_TDF FETCH C_TDF INTO @I DECLARE @N INT SET @N = 1 WHILE @@FETCH_STATUS = 0 BEGIN PRINT @N FETCH C_TDF INTO @I SET @N = @N + 1 END CLOSE C_TDF DEALLOCATE C_TDF 1 2 3
Les lignes ont été lues une par une.
Tentons de suprimer la première ligne :
Vérification :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 DECLARE @I INT DECLARE C_TDF CURSOR FOR SELECT COL FROM T_TEST_DOUBLON_FETCH FOR UPDATE OPEN C_TDF FETCH C_TDF INTO @I DECLARE @N INT SET @N = 1 WHILE @@FETCH_STATUS = 0 BEGIN PRINT @N IF @N = 1 DELETE FROM T_TEST_DOUBLON_FETCH WHERE CURRENT OF C_TDF FETCH C_TDF INTO @I SET @N = @N + 1 END CLOSE C_TDF DEALLOCATE C_TDF
SELECT * FROM T_TEST_DOUBLON_FETCH
Lisez l'article que j'i écrit sur le sujet :
http://sqlpro.developpez.com/cours/doublons/
A +
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager