MySQL 排序
我們知道從 MySQL 表中使用 SQL SELECT 語句來讀取數(shù)據(jù)。
如果我們需要對讀取的數(shù)據(jù)進行排序,我們就可以使用 MySQL 的 ORDER BY 子句來設定你想按哪個字段哪種方式來進行排序,再返回搜索結果。
語法
以下是 SQL SELECT 語句使用 ORDER BY 子句將查詢數(shù)據(jù)排序后再返回數(shù)據(jù):
SELECT 字段 FROM 表名 ORDER BY 字段 【ASC | DESC】
- 你可以使用任何字段來作為排序的條件,從而返回排序后的查詢結果。
- 你可以設定多個字段來排序。
- 你可以使用 ASC 或 DESC 關鍵字來設置查詢結果是按升序或降序排列。 默認情況下,它是按升序排列。
- 你可以添加 WHERE...LIKE 子句來設置條件。
在命令提示符中使用 ORDER BY 子句
以下將在 SQL SELECT 語句中使用 ORDER BY 子句來讀取MySQL 數(shù)據(jù)表 mydb_jianshu 中的數(shù)據(jù):
實例
以下實例,結果將按升序及降序排列。
mysql> use mydb;
Database changed
mysql> select * from mydb_jianshu order by jianshu_id asc;
+------------+----------------------------+----------------+-----------------+
| jianshu_id | jianshu_title | jianshu_author | submission_date |
+------------+----------------------------+----------------+-----------------+
| 2 | 學習網(wǎng)絡安全從0到1 | Fangdm | 2018-02-09 |
| 3 | MySQL基礎 | Fangdm | 2018-02-09 |
+------------+----------------------------+----------------+-----------------+
2 rows in set (0.08 sec)
mysql> select * from mydb_jianshu order by jianshu_id desc;
+------------+----------------------------+----------------+-----------------+
| jianshu_id | jianshu_title | jianshu_author | submission_date |
+------------+----------------------------+----------------+-----------------+
| 3 | MySQL基礎 | Fangdm | 2018-02-09 |
| 2 | 學習網(wǎng)絡安全從0到1 | Fangdm | 2018-02-09 |
+------------+----------------------------+----------------+-----------------+
2 rows in set (0.00 sec)
讀取 mydb_jianshu 表中所有數(shù)據(jù)并按 jianshu_id 字段的升降序排列。
在 PHP 腳本中使用 ORDER BY 子句
實例
以下實例,查詢后的數(shù)據(jù)按 jianshu_id 字段的降序排列后返回。
<?php
$dbname = 'mydb';
$servername = 'localhost';
$username = 'root';
$password = '';
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// 設置 PDO 錯誤模式為異常
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "select * from mydb_jianshu order by jianshu_id desc;";
// 設置結果集為關聯(lián)數(shù)組
$result = $conn->query("$sql");
$data = $result->fetchAll(PDO::FETCH_ASSOC);
echo "<table border='1'>
<tr>
<td>jianshu_id</td>
<td>jianshu_title</td>
<td>jianshu_author</td>
<td>submission_date</td>
</tr>
";
foreach ($data as $k => $v) {
echo "<tr>";
echo "<td>" . $v['jianshu_id'] . "</td>";
echo "<td>" . $v['jianshu_title'] . "</td>";
echo "<td>" . $v['jianshu_author'] . "</td>";
echo "<td>" . $v['submission_date'] . "</td>";
echo "</tr>";
}
echo "</table>";
} catch (PDOException $e) {
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
輸出結果:

image.png
注:注入測試時我們可以利用 ORDER BY 來判斷表中含多少個字段。