IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Fetch First : dans un select ?


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 102
    Points : 74
    Points
    74
    Par défaut Fetch First : dans un select ?
    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

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 899
    Points : 53 140
    Points
    53 140
    Billets dans le blog
    6
    Par défaut
    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 :

    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
    Vérification :

    SELECT * FROM T_TEST_DOUBLON_FETCH

    Lisez l'article que j'i écrit sur le sujet :
    http://sqlpro.developpez.com/cours/doublons/


    A +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. "fetch first 1 rows only" dans un "Left Join"
    Par nico.exe dans le forum DB2
    Réponses: 5
    Dernier message: 02/04/2012, 16h25
  2. [interbase][SQL] concatener 2 champs dans le select
    Par Harry dans le forum Bases de données
    Réponses: 10
    Dernier message: 09/03/2006, 06h45
  3. Joindre une valeur arbitraire dans un SELECT
    Par Tuxxy dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/01/2004, 17h04
  4. Réponses: 3
    Dernier message: 23/09/2003, 09h12
  5. [Sybase] Select dans une select loop en C
    Par Claudio dans le forum Sybase
    Réponses: 2
    Dernier message: 29/04/2003, 18h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo