MySQL 排序
我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。
如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。
语法
以下是 SQL SELECT 语句使用 ORDER BY 子句将查询数据排序后再返回数据:
SELECTfield1,field2,...fieldNFROMtable_name1,table_name2... ORDERBYfield1[ASC[DESC][默认ASC]],[field2...][ASC[DESC][默认ASC]]
你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
你可以设定多个字段来排序。
你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
你可以添加 WHERE…LIKE 子句来设置条件。
在命令提示符中使用 ORDER BY 子句
以下将在 SQL SELECT 语句中使用 ORDER BY 子句来读取MySQL 数据表 gtxyzz_tbl 中的数据:
实例
尝试以下实例,结果将按升序及降序排列。
SQL 排序
mysql>useGTXYZZ; Databasechanged mysql>SELECT*fromgtxyzz_tblORDERBYsubmission_dateASC;
+-----------+--------------+---------------+-----------------+ |gtxyzz_id|gtxyzz_title|gtxyzz_author|submission_date| +-----------+--------------+---------------+-----------------+ |3|学习SQL|SQL教程|2022-01-01| |2|学习css|css教程|2022-03-20| |1|学习MySQL|MySQL教程|2022-03-21| +-----------+--------------+---------------+-----------------+ 3rowsinset(0.00sec)
mysql>SELECT*fromgtxyzz_tblORDERBYsubmission_dateDESC;
+-----------+--------------+---------------+-----------------+ |gtxyzz_id|gtxyzz_title|gtxyzz_author|submission_date| +-----------+--------------+---------------+-----------------+ |1|学习MySQL|MySQL教程|2022-03-21| |2|学习css|css教程|2022-03-20| |3|学习SQL|SQL教程|2022-01-01| +-----------+--------------+---------------+-----------------+ 3rowsinset(0.00sec)
读取 gtxyzz_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,"setnamesutf8"); $sql='SELECTgtxyzz_id,gtxyzz_title, gtxyzz_author,submission_date FROMgtxyzz_tbl ORDERBYsubmission_dateASC'; mysqli_select_db($conn,'GTXYZZ'); $retval=mysqli_query($conn,$sql); if(!$retval) { die('无法读取数据:'.mysqli_error($conn)); } echo'<h2>1818IP教程MySQLORDERBY测试<h2>'; echo'<tableborder="1"><tr><td>教程ID</td><td>标题</td><td>作者</td><td>提交日期</td></tr>'; while($row=mysqli_fetch_array($retval,MYSQLI_ASSOC)) { echo"<tr><td>{$row['gtxyzz_id']}</td>". "<td>{$row['gtxyzz_title']}</td>". "<td>{$row['gtxyzz_author']}</td>". "<td>{$row['submission_date']}</td>". "</tr>"; } echo'</table>'; mysqli_close($conn); ?>
输出结果如下图所示: