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

Développement SQL Server Discussion :

Sélectionner les 1000 dernières lignes


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 58
    Points : 57
    Points
    57
    Par défaut Sélectionner les 1000 dernières lignes
    Bonjour à tous,

    Je bloque sur un truc qui à mon avis est très bête ... Si je veux sélectionner les 1000 premières lignes d'un tableau je fais un select top 1000 * mais si je veux sélectionner les 1000 suivantes, qu'est-ce que je dois mettre ? (inutile de préciser que j'ai cherché un peu sur internet mais rien trouvé). Merci ))

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    vous pouvez faire comme ceci à partir de la version 2012 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT ???
    FROM ???
    ORDER BY ???
    OFFSET 1000 ROWS
    FETCH NEXT 1000 ROWS ONLY;

  3. #3
    Membre averti
    Avatar de taibag
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 214
    Points : 357
    Points
    357
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Les linges dans une table n'ont pas un ordre spécifique , les lignes sélectionnée dans votre requête sont aléatoire vous devez utiliser la clause ORDER BY , si vous avez une clé primaire dans votre table qui s'appele par exemple ID vous pouvez faire comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TOP 1000* FROM  VOTRETABLE ORDER BY ID DESC ;
    Bien sur il ya d'autre moyen pour réaliser cela.
    मैं एक छात्र हूँ |

  4. #4
    Invité
    Invité(e)
    Par défaut
    Vous pouvez inverser l'ordre de tri (desc) de la requête et utiliser un limit n ou top n.
    select * from tbl_name order by col_name desc limit 1000;
    ou
    select top 1000 * from tbl_name order by col_name desc

    autres solutions :

    (sql)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
      FROM (SELECT * FROM tbl_name ORDER BY col_name desc)
    WHERE ROWNUM < 1000;
    (oracle) - Attention le dense_rank génère des duplicats si des valeurs sont identiques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT col_name 
      FROM (SELECT col_name, DENSE_RANK() OVER (ORDER BY col_name desc) col_dense_rank FROM tbl_name) 
    WHERE col_dense_rank <= 1000;
    Dernière modification par al1_24 ; 03/09/2015 à 12h24. Motif: Balises CODE

  5. #5
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Citation Envoyé par Ineedi2 Voir le message
    Bonjour à tous,

    Je bloque sur un truc qui à mon avis est très bête ... Si je veux sélectionner les 1000 premières lignes d'un tableau je fais un select top 1000 * mais si je veux sélectionner les 1000 suivantes, qu'est-ce que je dois mettre ? (inutile de préciser que j'ai cherché un peu sur internet mais rien trouvé). Merci ))
    Outre la solution de aieeeuuuuuu (je ne garantis pas le nombre de voyelles), il y a le classique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT [colonnes]
      FROM  ( 
                 SELECT [colonnes], row_number() OVER ( ORDER BY [colonnes de tri] ) as rang
                   FROM VOTRETABLE 
              ) t
     WHERE t.rang BETWEEN 1001 AND 2000
    Ce qui permet de faire de la pagination d'une manière générale.

Discussions similaires

  1. [PROC] Sélectionner les 2 dernières lignes d'une table
    Par Lamyaa34 dans le forum SAS Base
    Réponses: 16
    Dernier message: 29/06/2011, 16h02
  2. [MySQL] Sélectionner les 5 dernières lignes
    Par Empty_body dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 08/07/2007, 12h04
  3. Ne pas traiter les x dernières lignes
    Par Fluxy dans le forum Windows
    Réponses: 3
    Dernier message: 13/06/2007, 13h22
  4. lire les X dernières lignes d'un fichier.
    Par Empty_body dans le forum Langage
    Réponses: 6
    Dernier message: 13/06/2007, 11h58
  5. lire dans un fichier les 100 dernières lignes
    Par amarcil dans le forum Langage
    Réponses: 2
    Dernier message: 25/02/2007, 19h32

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