MySQL ORDER BY 排序关键字用法详解与示例

Mysql 教程


MYSQL ORDER BY 子句用于按升序或降序对记录进行排序。


语法格式

以下是 SQL SELECT 语句使用 ORDER BY 子句将查询数据排序后再返回数据:

SELECT field1, field2,…fieldN
FROM table_name1, table_name2…
[WHERE conditions]
ORDER BY field1 [ASC [DESC][默认 ASC]], [field2…] [ASC [DESC][默认 ASC]]

参数说明

field:指定要检索的字段。

table_name:它指定要从中检索记录的表。FROM 子句中必须至少列出一个表。

WHERE conditions:​可选项。它指定要选择的记录必须满足的条件。

ASC:可选项,它按表达式按升序对结果集进行排序(默认,如果没有修饰符是提供者)。

DESC:可选项,它按表达式按降序对结果集进行排序。


在命令提示符中使用 ORDER BY 子句

以下将在 SQL SELECT 语句中使用 ORDER BY 子句来读取MySQL 数据表 runoon_tbl 中的数据:

SQL 排序

尝试以下实例,结果将按升序及降序排列。

mysql> use RUNOON
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> SELECT * from runoon_tbl ORDER BY submission_date ASC;
+-----------+---------------+---------------+-----------------+
| runoon_id | runoon_title  | runoon_author | submission_date |
+-----------+---------------+---------------+-----------------+
|         4 | 学习 Python   | RUNOON.COM    | 2016-03-06      |
|         1 | 学习 PHP      | 奔月教程      | 2021-10-16      |
|         2 | 学习 MySQL    | 奔月教程      | 2021-10-16      |
+-----------+---------------+---------------+-----------------+
3 rows in set (0.00 sec)

mysql> SELECT * from runoon_tbl ORDER BY submission_date DESC;
+-----------+---------------+---------------+-----------------+
| runoon_id | runoon_title  | runoon_author | submission_date |
+-----------+---------------+---------------+-----------------+
|         1 | 学习 PHP      | 奔月教程      | 2021-10-16      |
|         2 | 学习 MySQL    | 奔月教程      | 2021-10-16      |
|         4 | 学习 Python   | RUNOON.COM    | 2016-03-06      |
+-----------+---------------+---------------+-----------------+
3 rows in set (0.00 sec)

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


在 PHP 脚本中使用 ORDER BY 子句

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

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

MySQL ORDER BY 测试

尝试以下实例,查询后的数据按 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 runoon_id, runoon_title, 
        runoon_author, submission_date
        FROM runoon_tbl
        ORDER BY submission_date ASC';
 
mysqli_select_db( $conn, 'RUNOON' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
    die('无法读取数据: ' . mysqli_error($conn));
}
echo '<h2>奔月教程 MySQL ORDER BY 测试<h2>';
echo '<table border="1"><tr><td>教程 ID</td><td>标题</td><td>作者</td><td>提交日期</td></tr>';
while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC))
{
    echo "<tr><td> {$row['runoon_id']}</td> ".
         "<td>{$row['runoon_title']} </td> ".
         "<td>{$row['runoon_author']} </td> ".
         "<td>{$row['submission_date']} </td> ".
         "</tr>";
}
echo '</table>';
mysqli_close($conn);
?>

输出结果如下图所示:


Mysql 教程


相关