Partage
  • Partager sur Facebook
  • Partager sur Twitter

Equivalent LIMIT avec SQL Server 2005

Question apparemment classique ...

    15 novembre 2010 à 16:52:47

    Bonjour,
    je cherche à creer une requete équivalente à celle ci :

    "récuper les 10 dernieres entrées" dans une base de données SQL Server.

    Apparemment la commande LIMIT ne marche pas et il faut utiliser 2 TOP.

    Mais impossible de trouver une requete adéquate sur le net.
    Peut etre pourriez vous m'indiquer une requete mssql afin que je puisse avancer, je galère ... :)
    merci.

    PS: pour l'instant j'ai monté cette requete :

    SELECT * FROM (
    			SELECT TOP 10 -- actually bottom five of the top fifteen (seek 10)
    			*
    		FROM
    			(
    			SELECT TOP 10
    				*
    				FROM
    				Unmanage_Table
    				ORDER BY
    				date
    			) AS T -- why is this necessary?
    			ORDER BY
    			T.date DESC
    		) AS T -- why is this necessary?
    	ORDER BY T.date -- fix order"
    


    Mais les résultats sont toujours les premières entrées de ma base, je cherche les dernières, les plus récentes.

    EDIT: nan personne ? please .. ! :)
    • Partager sur Facebook
    • Partager sur Twitter
      16 novembre 2010 à 21:21:32

      Si tu as un champ date dans ta table tu fais un ORDER BY DESC sur ce champ et un TOP 10 dans le SELECT.
      • Partager sur Facebook
      • Partager sur Twitter
        21 novembre 2010 à 13:28:02

        saslut,

        Si tu veut simplement les dix dernieres entrées, il faut juste faire
        SELECT TOP 10 *
        FROM Matable
        ORDER BY Id DESC
        


        Mais là il vont ressortir à l'envers.
        Pour les remettre dans le bon order

        SELECT *
        FROM
           (SELECT TOP 10 Id, Champs
           FROM Matable
           ORDER BY Id DESC) as SousRequete
        ORDER BY SousRequete.Id
        

        Pour sélectionner des champs au milieu de la tables il faut combiner deux TOP avec des order by en sens contraire.
        Ainsi tu coupes une fois ta table par le haut, et une fois par le bas.
        Je te laisse calculer les valeur de X et Y.

        SELECT TOP X *
        FROM
           (SELECT TOP Y Id, Champs
           FROM Matable
           ORDER BY Id DESC) as SousRequete
        ORDER BY SousRequete.Id
        


        Je sais qu'on peut faire comme ça, car je l'ai déjà fait, même si j'ai plus le détail ici.

        J'espère que ceci peut t'aider,

        A +
        • Partager sur Facebook
        • Partager sur Twitter

        Equivalent LIMIT avec SQL Server 2005

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown