MySQL - Ordinamento dei risultati

Abbiamo visto l'SQL SELECTcomando per recuperare i dati da una tabella MySQL. Quando si selezionano le righe, il server MySQL è libero di restituirle in qualsiasi ordine, a meno che non venga indicato diversamente dicendo come ordinare il risultato. Tuttavia, si ordina un set di risultati aggiungendo un fileORDER BY clausola che denomina la colonna o le colonne che si desidera ordinare.

Sintassi

Il seguente blocco di codice è una sintassi SQL generica del comando SELECT insieme alla clausola ORDER BY per ordinare i dati da una tabella MySQL.

SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1, [field2...] [ASC [DESC]]
  • È possibile ordinare il risultato restituito su qualsiasi campo, se tale campo viene elencato.

  • Puoi ordinare il risultato su più di un campo.

  • È possibile utilizzare la parola chiave ASC o DESC per ottenere risultati in ordine crescente o decrescente. Per impostazione predefinita, è l'ordine crescente.

  • È possibile utilizzare la clausola WHERE ... LIKE nel modo consueto per inserire una condizione.

Utilizzo della clausola ORDER BY nel prompt dei comandi

Questo utilizzerà il comando SQL SELECT con l'estensione ORDER BY clausola per recuperare i dati dalla tabella MySQL - tutorials_tbl.

Esempio

Prova il seguente esempio, che restituisce il risultato in ordine crescente.

root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl ORDER BY tutorial_author ASC
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|      2      |  Learn MySQL   |     Abdul S     |    2007-05-24   |   
|      1      |   Learn PHP    |    John Poul    |    2007-05-24   |   
|      3      | JAVA Tutorial  |     Sanjay      |    2007-05-06   |   
+-------------+----------------+-----------------+-----------------+
3 rows in set (0.42 sec)

mysql>

Verificare tutti i nomi degli autori elencati in ordine crescente.

Utilizzo della clausola ORDER BY all'interno di uno script PHP

È possibile utilizzare una sintassi simile della clausola ORDER BY nella funzione PHP - mysql_query(). Questa funzione viene utilizzata per eseguire il comando SQL e successivamente un'altra funzione PHPmysql_fetch_array() può essere utilizzato per recuperare tutti i dati selezionati.

Esempio

Prova il seguente esempio, che restituisce il risultato in ordine decrescente degli autori del tutorial.

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   $sql = 'SELECT tutorial_id, tutorial_title, 
      tutorial_author, submission_date
      FROM tutorials_tbl
      ORDER BY  tutorial_author DESC';

   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Tutorial ID :{$row['tutorial_id']}  <br> ".
         "Title: {$row['tutorial_title']} <br> ".
         "Author: {$row['tutorial_author']} <br> ".
         "Submission Date : {$row['submission_date']} <br> ".
         "--------------------------------<br>";
   } 
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>