Sélectionnez N premiers Enregistrements Commandés par X, Mais Ont des Résultats dans l'Ordre Inverse
Je vais essayer d'obtenir les N premiers enregistrements (au moment de la commande par colonne X), mais le jeu de résultats dans l'ordre inverse. La déclaration suivante est incorrect, mais probablement démontre ce que je suis après:
SELECT * FROM (SELECT TOP 10 * FROM FooTable ORDER BY X DESC) ORDER BY X ASC
Par exemple, la colonne X pourrait être un ID ou un timestamp; je veux les 10 derniers enregistrements, mais souhaitez retourné dans l'ordre chronologique.
Pourquoi ne pas
Parce que je voudrais obtenir les 10 derniers enregistrements, mais ils seraient retournés dans l'ordre chronologique inverse.
SELECT TOP 10 * FROM FooTable ORDER BY X ASC
?Parce que je voudrais obtenir les 10 derniers enregistrements, mais ils seraient retournés dans l'ordre chronologique inverse.
OriginalL'auteur I. J. Kennedy | 2010-04-03
Vous devez vous connecter pour publier un commentaire.
c'est à dire que vous pourriez avoir besoin d'un alias sur votre sous-requête, mais d'autres que cela devrait fonctionner.
OriginalL'auteur davek
Essayer
ou avec une expression de table commune (CTE)
OriginalL'auteur SQLMenace
Clause ORDER BY est utilisée pour commander l'ENSEMBLE de résultats par une colonne spécifiée.
Votre requête
Select TOP 10 * from FooTable ORDER BY X DESC
en supposant que X est le timestamp ,on ne va pas revenir le plus récemment inséré 10 lignes. Il sera de retour le top 10 lignes stockées (dans n'importe quel ordre) dans la Base de données, puis retourner l'ensemble de résultats de la 10 de ces lignes , dans l'ordre décroissant.Par conséquent, votre sous-requête doit être modifié pour
Select TOP 10 * from (Select * from FooTable ORDER BY DESC) as T
Cela devrait répondre à votre première exigence. Vous pouvez ensuite utiliser ce résultat comme un alias, pour décider de votre finale de l'ordre de tri.
J'espère que je vous ai bien compris, quand tu dis "je vais essayer d'obtenir les N premiers enregistrements (au moment de la commande par colonne X)"
OriginalL'auteur The Machine
Une solution alternative à cette question pour toutes les versions prises en charge pour HAUT mot-clé est d'utiliser LIMITE.
Exemple :-
OriginalL'auteur Sunny