J'essaie d'obtenir le top n records (lorsqu'il est commandé par une colonne x), mais j'ai le résultat dans l'ordre inverse. La déclaration suivante est par exemple, la colonne x pourrait être une pièce d'identité ou un horodatage; Je veux les 10 derniers enregistrements, mais je veux qu'ils sont retournés dans l'ordre chronologique avant. P> p>
4 Réponses :
SELECT * FROM (SELECT TOP 10 * FROM FooTable ORDER BY X DESC) as myAlias ORDER BY X ASC i.e. you might need an alias on your subquery, but other than that it should work.
Bien merci. Bien que je ne comprends pas vraiment pourquoi SQL exige un alias quand il n'y a pas de référence à celui-ci ailleurs dans la requête.
Essayez ou avec une expression de table commune (CTE) p>
L'ordre par clause est utilisé pour commander le résultat défini par une colonne spécifiée. P>
votre requête
Cela devrait remplir votre première exigence. Vous pouvez ensuite utiliser ce résultat défini comme alias, pour décider de votre ordre de tri final. P>
J'espère que je vous ai bien compris, lorsque vous dites " J'essaie d'obtenir le Top N records (lorsqu'il est commandé par une colonne x) em>" p> " Sélectionnez Top 10 * à partir de la commande Footed by x Desc Code> En supposant que X est l'horodatage, ne retourne pas les 10 rangées insérées les plus récentes. Il retournera les 10 premières lignes telles que stockées (sous la commande) dans la base de données et renvoiez ensuite l'ensemble des résultats des 10 lignes de ce type, dans l'ordre décroissant.
D'où votre sous-requête doit être modifiée à p>
Sélectionnez le top 10 * à partir de (SELECT * à partir de la commande FOOKABLE par Desc) comme t code> p>
L'erreur est "La commande par clause n'est pas valide dans des vues, des fonctions en ligne, des tables dérivées, des sous-requêtes et des expressions de table communes, à moins que le haut, le décalage ou le XML soit également spécifié."
Une solution alternative à cette question pour toutes les versions non prises pour SELECT * FROM
(SELECT * FROM FooTable ORDER BY X DESC LIMIT 10) as myAlias
ORDER BY X ASC
Pourquoi pas
SELECT TOP 10 * de la commande FOOKABLE par X ASC code>?
@Dor Parce que je recevrais les 10 derniers enregistrements, mais ils seraient retournés dans l'ordre chronologique inverse.