Database
 sql >> Database >  >> RDS >> Database

Come ordinare per due colonne in SQL?

Problema:

Devi visualizzare i record di una determinata tabella ordinati per due colonne.

Esempio:

Il nostro database ha una tabella denominata employee con le seguenti colonne:id , first_name , last_name e salary .

id nome cognome stipendio
1 Lisa Ulman 3000
2 Ada Muller 2400
3 Tommaso Verde 2400
4 Michael Muller 3000
5 Maria Verde 2400

Mostriamo tutte le informazioni per ciascun dipendente, ma ordiniamo i record in base allo stipendio prima in ordine decrescente e poi in base al cognome in ordine crescente.

Soluzione:

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

Questa query restituisce record ordinati in base a due colonne:salario e cognome .

<
id nome cognome stipendio
4 Michele M uler 3000
1 Lisa U lman 3000
3 Tommaso G reen 2400
5 Maria G reen 2400
2 Ada M uler 2400

Discussione:

Se vuoi selezionare i record da una tabella ma vuoi vederli ordinati secondo due colonne, puoi farlo con ORDER BY . Questa clausola arriva alla fine della tua query SQL.

Dopo il ORDER BY parola chiave, aggiungi prima il nome della colonna in base alla quale desideri ordinare i record (nel nostro esempio, stipendio). Quindi, dopo una virgola, aggiungi la seconda colonna (nel nostro esempio, last_name ). È possibile modificare l'ordinamento (crescente o decrescente) separatamente per ciascuna colonna. Se desideri utilizzare l'ordine crescente (dal basso verso l'alto), puoi utilizzare il ASC parola chiave; questa parola chiave è facoltativa, tuttavia, poiché è l'ordine predefinito quando non ne viene specificato nessuno. Se vuoi usare l'ordine decrescente, inserisci il DESC parola chiave dopo la colonna appropriata (nell'esempio, abbiamo utilizzato l'ordine decrescente per il salary colonna).

Nel nostro esempio, abbiamo prima ordinato il risultato per stipendio in ordine decrescente (stipendi più alti in quelli più bassi) e poi per cognome in ordine crescente all'interno di quei record già ordinati.