SQL meerdere kolommen bestellen

Hoe kan ik sorteren op meerdere kolommen in SQL en in verschillende richtingen. column1wordt aflopend gesorteerd en column2oplopend.


Antwoord 1, autoriteit 100%

ORDER BY column1 DESC, column2

Dit sorteert alles eerst op column1(aflopend) en vervolgens op column2(oplopend, wat de standaardinstelling is) wanneer de velden column1voor twee of meer rijen zijn gelijk.


Antwoord 2, autoriteit 34%

De andere antwoorden missen een concreet voorbeeld, dus hier komt het:

Gezien de volgende tabel Mensen:

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

Als u de onderstaande query uitvoert:

SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC

De resultatenset ziet er als volgt uit:

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

Antwoord 3, autoriteit 12%

SELECT  *
FROM    mytable
ORDER BY
        column1 DESC, column2 ASC

Antwoord 4, autoriteit 2%

De volgorde van meerdere kolommen hangt af van de corresponderende waarden van beide kolommen:
Hier is mijn tabelvoorbeeld waar twee kolommen zijn genoemd met alfabetten en cijfers en de waarden in deze twee kolommen zijn ASC en DESC Orders.

Nu voer ik Order uit door in deze twee kolommen door onder de opdracht uit te voeren:

Nu opnieuw, voeg ik nieuwe waarden in deze twee kolommen, waar alfabetwaarde in ASC Bestel:

En de kolommen in Voorbeeldtafel zien er zo uit.
Voer nu opnieuw dezelfde werking uit:

U kunt de waarden in de eerste kolom zien staan ​​in dec-bestelling, maar de tweede kolom is niet in ASC-bestelling.


Antwoord 5

U kunt meerdere bestellingen gebruiken op meerdere conditie,

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 

Antwoord 6

SELECT id,  
  first_name,
  last_name,
  salary
FROM employee
ORDER BY salary DESC, last_name; 

Als u records van een tabel wilt selecteren, maar ze wilt zien dat ze volgens twee kolommen worden gesorteerd, kunt u dit doen met de bestelling door. Deze clausule komt aan het einde van uw SQL-query.

Voeg na de bestelling op trefwoord de naam van de kolom toe waarmee u eerst wilt sorteren (in ons voorbeeld, salaris). Voeg vervolgens na een komma de tweede kolom toe (in ons voorbeeld, last_name). U kunt de sorteervolgorde (oplopend of aflopend) afzonderlijk voor elke kolom wijzigen. Als u oplopende (lage naar hoge) bestelling wilt gebruiken, kunt u het SC-trefwoord gebruiken; Dit sleutelwoord is echter optioneel, omdat dit de standaardorder is wanneer er geen is opgegeven. Als u afleveringsvolgorde wilt gebruiken, plaatst u het Desc-trefwoord na de juiste kolom (in het voorbeeld gebruikten we aflopende volgorde voor de salariskolom).

Other episodes