MySQL - sortowanie wyników

Widzieliśmy SQL SELECTpolecenie pobierania danych z tabeli MySQL. Gdy wybierzesz wiersze, serwer MySQL może zwrócić je w dowolnej kolejności, chyba że zalecisz mu inaczej, mówiąc, jak posortować wynik. Ale możesz posortować zestaw wyników, dodając plikORDER BY klauzula, która nazywa kolumnę lub kolumny, które chcesz posortować.

Składnia

Poniższy blok kodu to ogólna składnia SQL polecenia SELECT wraz z klauzulą ​​ORDER BY do sortowania danych z tabeli MySQL.

SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1, [field2...] [ASC [DESC]]
  • Możesz posortować zwrócony wynik według dowolnego pola, jeśli to pole jest wyszczególnione.

  • Możesz sortować wynik według więcej niż jednego pola.

  • Możesz użyć słowa kluczowego ASC lub DESC, aby uzyskać wynik w porządku rosnącym lub malejącym. Domyślnie jest to kolejność rosnąca.

  • Aby umieścić warunek, możesz użyć klauzuli WHERE ... LIKE w zwykły sposób.

Korzystanie z klauzuli ORDER BY w wierszu polecenia

Spowoduje to użycie polecenia SQL SELECT z rozszerzeniem ORDER BY klauzula do pobierania danych z tabeli MySQL - tutorials_tbl.

Przykład

Wypróbuj poniższy przykład, który zwraca wynik w kolejności rosnącej.

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>

Sprawdź wszystkie nazwiska autorów, które są wymienione w kolejności rosnącej.

Używanie klauzuli ORDER BY wewnątrz skryptu PHP

Możesz użyć podobnej składni klauzuli ORDER BY w funkcji PHP - mysql_query(). Ta funkcja jest używana do wykonania polecenia SQL, a później innej funkcji PHPmysql_fetch_array() można użyć do pobrania wszystkich wybranych danych.

Przykład

Wypróbuj poniższy przykład, który zwraca wynik w kolejności malejącej według autorów samouczka.

<?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);
?>