web-dev-qa-db-fra.com

Commandes multiples de colonnes SQL

J'essaie de trier plusieurs colonnes en SQL et dans différentes directions. column1 serait trié par ordre décroissant, et column2 par ordre croissant.

Comment puis-je faire ceci?

572
ORDER BY column1 DESC, column2

Cela trie tout d'abord par column1 (décroissant), puis par column2 (croissant, qui est la valeur par défaut) lorsque les champs column1 de deux ou plusieurs lignes sont égaux.

928

Les autres réponses manquent d'un exemple concret, alors voici:

Étant donné le tableau Personnes suivant:

 FirstName |  LastName   |  YearOfBirth
----------------------------------------
  Thomas   | Alva Edison |   1847
  Benjamin | Franklin    |   1706
  Thomas   | More        |   1478
  Thomas   | Jefferson   |   1826

Si vous exécutez la requête ci-dessous:

SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC

Le jeu de résultats ressemblera à ceci:

 FirstName |  LastName   |  YearOfBirth
----------------------------------------
  Thomas   | More        |   1478
  Thomas   | Jefferson   |   1826
  Thomas   | Alva Edison |   1847
  Benjamin | Franklin    |   1706
322
SELECT  *
FROM    mytable
ORDER BY
        column1 DESC, column2 ASC
131
Quassnoi

L'ordre des colonnes multiples dépend des valeurs correspondantes des deux colonnes: Voici mon exemple de table où deux colonnes sont nommées alphabets et nombres et les valeurs de ces deux colonnes sont asc et desc commandes.

enter image description here

Maintenant, j'exécute Order By dans ces deux colonnes en exécutant la commande ci-dessous:

enter image description here

Maintenant, encore une fois, j'insère de nouvelles valeurs dans ces deux colonnes, où Alphabet value in ASC:

enter image description here

et les colonnes de la table Example ressemblent à ceci. Maintenant, effectuez à nouveau la même opération:

enter image description here

Vous pouvez voir que les valeurs de la première colonne sont dans l'ordre décroissant, mais que la deuxième colonne n'est pas dans l'ordre ASC.

14
Jason Clark

Vous pouvez utiliser plusieurs commandes sur plusieurs conditions,

ORDER BY 
     (CASE 
        WHEN @AlphabetBy = 2  THEN [Drug Name]
      END) ASC,
    CASE 
        WHEN @TopBy = 1  THEN [Rx Count]
        WHEN @TopBy = 2  THEN [Cost]
        WHEN @TopBy = 3  THEN [Revenue]
    END DESC 
4
atik sarker