English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ordinamento MySQL

Sappiamo che possiamo leggere i dati da una tabella MySQL utilizzando la dichiarazione SQL SELECT.

Se dobbiamo ordinare i dati letti, possiamo utilizzare la funzione ORDER BY di MySQL ORDER BY Clausola per stabilire quale campo e in quale modo desideri ordinare, e restituire i risultati della ricerca.

Sintassi

Di seguito è riportato un esempio di dichiarazione SQL SELECT che utilizza la clausola ORDER BY per ordinare i dati della query e restituirli:

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [ASC [DESC][default ASC]], [field2...] [ASC [DESC][default ASC]]
  • Puoi utilizzare qualsiasi campo come condizione di ordinamento per restituire i risultati della query ordinati.

  • Puoi impostare più campi per l'ordinamento.

  • Puoi utilizzare i termini chiave ASC o DESC per impostare se i risultati della query sono ordinati in ordine crescente o decrescente. Di default, è in ordine crescente.

  • Puoi aggiungere la clausola WHERE...LIKE per impostare le condizioni.

Utilizza la clausola ORDER BY nel prompt dei comandi

Di seguito utilizzeremo la clausola ORDER BY nella dichiarazione SQL SELECT per leggere i dati dalla tabella w3codebox_tbl del MySQL:

在线示例

Prova i seguenti esempi, i risultati saranno ordinati in ordine crescente e decrescente.

mysql> use w3codebox;
Database changed
MariaDB [w3codebox]> SELECT * from w3codebox_tbl ORDER BY submission_date ASC;
+----------+-------------+--------------+-----------------+
| w3codebox_id | w3codebox_title | w3codebox_author | submission_date |
+----------+-------------+--------------+-----------------+
|        1 | Impara PHP    | oldtoolbag.com    | 2018-04-14      |
|                          2 | 学习 MySQL         | oldtoolbag.com          | 2018-04-14                  |
|                          3 | JAVA 教程          | oldtoolbag.com          | 2018-04-14                  |
|        4 | Impara Python | oldtoolbag.com    | 2019-06-08      |
+----------+-------------+--------------+-----------------+
4 righe nel set (0.00 sec)
MariaDB [w3codebox]> SELECT * from w3codebox_tbl ORDER BY submission_date DESC;
+----------+-------------+--------------+-----------------+
| w3codebox_id | w3codebox_title | w3codebox_author | submission_date |
+----------+-------------+--------------+-----------------+
|        4 | Impara Python | oldtoolbag.com    | 2019-06-08      |
|        1 | Impara PHP    | oldtoolbag.com    | 2018-04-14      |
|                          2 | 学习 MySQL         | oldtoolbag.com          | 2018-04-14                  |
|                          3 | JAVA 教程          | oldtoolbag.com          | 2018-04-14                  |
+----------+-------------+--------------+-----------------+
4 rows in set (0.02 sec)

读取 w3codebox_tbl 表中所有数据并按 submission_date 字段的升序排列。

在 PHP 脚本中使用 ORDER BY 子句

你可以使用PHP函数的 mysqli_query() 及相同的 SQL SELECT 带上 ORDER BY 子句的命令来获取数据。

该函数用于执行 SQL 命令,然后通过 PHP 函数 mysqli_fetch_array() 来输出所有查询的数据。

在线示例

试以下示例,查询后的数据按 submission_date 字段的降序排列后返回。

<?php
$dbhost = 'localhost'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn)
{
    die('连接失败: ' . mysqli_error($conn));
}
// 设置编码,防止中文乱码
mysqli_query($conn, "set names utf8");
 
$sql = 'SELECT w3codebox_id, w3codebox_title, 
        w3codebox_author, submission_date
        FROM w3codebox_tbl
        ORDER BY submission_date ASC';
 
mysqli_select_db($conn, 'w3codebox');
$retval = mysqli_query($conn, $sql);
if(! $retval)
{
    die('Impossibile leggere i dati: ' . mysqli_error($conn));
}
echo '<h2>Test di ORDER BY su MySQL<h2>';
echo '<table border="1"><tr><td>Identificativo tutorial</td><td>Titolo</td><td>Autore</td><td>Data di presentazione</td></tr>';
while($row = mysqli_fetch_array($retval))
{
    echo "<tr><td> {$row['w3codebox_id']}</td> ".
         "<td>{$row['w3codebox_title']} </td> ".
         "<td>{$row['w3codebox_author']} </td> ".
         "<td>{$row['submission_date']} </td> ".
         "</tr>";
}
echo '</table>';
mysqli_close($conn);
?>

Il risultato di output è illustrato nella figura seguente: