SELECT column_list FROM table_name ORDER BY column_name [ASC | DESC];
ASC:升序(默認),1→9,a→z。DESC:降序,9→1,z→a。-- 年齡升序 SELECT * FROM person ORDER BY age; -- 年齡降序 SELECT * FROM person ORDER BY age DESC;
SELECT * FROM person ORDER BY last_name, first_name;
排序邏輯:先按第一列排序,值相同的行再按第二列排序,以此類推。
<?php
$conn = mysqli_connect("localhost", "user", "pass", "dbname");
if (!$conn) die("連接失敗: " . mysqli_connect_error());
$sql = "SELECT FirstName, LastName, Age FROM person ORDER BY Age";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo $row["FirstName"] . " " . $row["LastName"] . " " . $row["Age"] . "<br>";
}
} else {
echo "無數據";
}
mysqli_close($conn);
?>
mysqli 或 PDO 替代已棄用的 mysql_* 函數;採用預處理語句防止 SQL 注入。
SELECT *, (price * quantity) AS total FROM orders ORDER BY total DESC;
SELECT * FROM tasks ORDER BY FIELD(status, 'urgent', 'high', 'normal', 'low');
-- NULL 排最後(默認 ASC 時 NULL 在前) ORDER BY col IS NULL, col ASC; -- NULL 排最前 ORDER BY col IS NULL DESC, col ASC;
SELECT * FROM articles ORDER BY created_at DESC LIMIT 10 OFFSET 20; -- 第 3 頁
ORDER BY indexed_col LIMIT N 可利用索引直接取前 N 行。ORDER BY RAND()、ORDER BY non_indexed_col 導致全表掃描+臨時表排序。ORDER BY 列順序(或反序)。