Mysql 教程
1. MySQL 教程 2. MySQL 安装 3. MySQL 管理 4. MySQL PHP 语法 5. MySQL 连接 6. MySQL 创建数据库 7. MySQL 删除数据库 8. MySQL 选择数据库 9. MySQL 数据类型 10. MySQL 创建数据表 11. MySQL 删除数据表 12. MySQL 插入数据 13. MySQL 查询数据 14. MySQL WHERE 子句 15. MySQL UPDATE 更新 16. MySQL DELETE 语句 17. MySQL LIKE 子句 18. MySQL 排序 19. MySQL 连接的使用 20. MySQL NULL 值处理 21. MySQL 正则表达式 22. MySQL 事务 23. MySQL ALTER命令 24. MySQL 索引 25. MySQL 临时表 26. MySQL 复制表 27. MySQL 元数据 28. MySQL 序列使用 29. MySQL 处理重复数据 30. MySQL 及 SQL 注入 31. MySQL 导出数据 32. MySQL 导入数据 33. MySQL 函数 34. MySQL 运算符

MySQL 排序

MySQL 排序

我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。

如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。

语法

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


SELECT field1, field2,...fieldN FROM table_name1, table_name2...

ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]

  • 你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
  • 你可以设定多个字段来排序。
  • 你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
  • 你可以添加 WHERE...LIKE 子句来设置条件。

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

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

实例

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

SQL 排序

mysql> use ; Database changed mysql> SELECT * from _tbl ORDER BY submission_date ASC; +-----------+---------------+---------------+-----------------+ | _id | _title | _author | submission_date | +-----------+---------------+---------------+-----------------+ | 3 | 学习 Java | .COM | 2015-05-01 | | 4 | 学习 Python | .COM | 2016-03-06 | | 1 | 学习 PHP | | 2017-04-12 | | 2 | 学习 MySQL | | 2017-04-12 | +-----------+---------------+---------------+-----------------+ 4 rows in set (0.01 sec) mysql> SELECT * from _tbl ORDER BY submission_date DESC; +-----------+---------------+---------------+-----------------+ | _id | _title | _author | submission_date | +-----------+---------------+---------------+-----------------+ | 1 | 学习 PHP | | 2017-04-12 | | 2 | 学习 MySQL | | 2017-04-12 | | 4 | 学习 Python | .COM | 2016-03-06 | | 3 | 学习 Java | .COM | 2015-05-01 | +-----------+---------------+---------------+-----------------+ 4 rows in set (0.01 sec)

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


在 PHP 脚本中使用 ORDER BY 子句

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

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

实例

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

MySQL ORDER BY 测试:

<?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 _id, _title, _author, submission_date FROM _tbl ORDER BY submission_date ASC'; mysqli_select_db( $conn, '' ); $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, MYSQL_ASSOC)) { echo "<tr><td> {$row['_id']}</td> ". "<td>{$row['_title']} </td> ". "<td>{$row['_author']} </td> ". "<td>{$row['submission_date']} </td> ". "</tr>"; } echo '</table>'; mysqli_close($conn); ?>

输出结果如下图所示: