☕ NEW! 完成新手任務即可參加抽獎!LINE 星巴克禮券等你拿,名額有限!        🎉 推廣活動:邀請好友註冊 DevLearn,累積推薦抽 LINE 星巴克禮券! 活動詳情 →        🔥 活動期間 2026/4/1 - 5/31 |已有 0 人參加       
sql 初學

ORDER BY 排序與 LIMIT 分頁

ORDER BY — 排序結果

比喻:ORDER BY 就像整理書架 📚

你從圖書館找到了一堆書(查詢結果), 但它們亂七八糟的——ORDER BY 幫你按作者、書名或出版日期排好。


升冪排序(預設)

SELECT Name, Age
FROM Students
ORDER BY Age;            -- ← 按年齡從小到大排

逐行解析:

SELECT Name, Age         -- 要看名字和年齡
FROM Students            -- 從學生表
ORDER BY Age;            -- 按 Age 排序,預設是 ASC(升冪 = 小到大)

結果:

 Name | Age
------+-----
 小明 |  20
 小美 |  21
 小華 |  22

降冪排序(DESC)

SELECT Name, Age
FROM Students
ORDER BY Age DESC;       -- ← DESC = Descending = 從大到小
 Name | Age
------+-----
 小華 |  22    ← 最大的在最上面
 小美 |  21
 小明 |  20

多欄排序

SELECT Name, Age, Score
FROM Students
ORDER BY Age ASC,        -- ← 先按年齡升冪
         Score DESC;     -- ← 年齡相同時,按分數降冪

逐行解析:

ORDER BY Age ASC         -- 第一排序條件:年齡小到大
         Score DESC      -- 第二排序條件:同齡時分數高到低
                         -- 就像先按姓氏排,再按名字排

LIMIT — 只取前 N 筆

-- PostgreSQL / MySQL
SELECT * FROM Students
ORDER BY Age
LIMIT 5;                 -- ← 只取前 5 筆

-- SQL Server
SELECT TOP 5 * FROM Students
ORDER BY Age;            -- ← SQL Server 用 TOP 而不是 LIMIT

逐行解析:

SELECT * FROM Students   -- 查所有學生
ORDER BY Age             -- 按年齡排序
LIMIT 5;                 -- 但只回傳前 5 筆
                         -- 常用於「排行榜前 10 名」等場景

OFFSET — 跳過前 N 筆(分頁)

-- 第 1 頁(每頁 10 筆)
SELECT * FROM Students
ORDER BY Id
LIMIT 10 OFFSET 0;      -- ← 跳過 0 筆,取 10 筆

-- 第 2 頁
SELECT * FROM Students
ORDER BY Id
LIMIT 10 OFFSET 10;     -- ← 跳過前 10 筆,取接下來 10 筆

-- 第 3 頁
SELECT * FROM Students
ORDER BY Id
LIMIT 10 OFFSET 20;     -- ← 跳過前 20 筆

逐行解析:

LIMIT 10 OFFSET 10      -- LIMIT = 一次取幾筆(每頁筆數)
                         -- OFFSET = 跳過幾筆(前面的頁數 × 每頁筆數)
                         -- 公式:OFFSET = (頁碼 - 1) × 每頁筆數

實用範例

-- 找出年紀最大的 3 位學生
SELECT Name, Age
FROM Students
ORDER BY Age DESC        -- 年齡由大到小
LIMIT 3;                 -- 只取前 3 筆

-- 找出分數最高的學生(只要第 1 名)
SELECT Name, Score
FROM Students
ORDER BY Score DESC
LIMIT 1;                 -- 只取冠軍

-- 找出第 2~4 名(跳過第 1 名)
SELECT Name, Score
FROM Students
ORDER BY Score DESC
LIMIT 3 OFFSET 1;       -- 跳過 1 筆,取 3 筆

小結

語法 用途
ORDER BY col 升冪排序(小到大)
ORDER BY col DESC 降冪排序(大到小)
ORDER BY col1, col2 多欄排序
LIMIT n 只取前 n 筆
OFFSET n 跳過前 n 筆
LIMIT + OFFSET 分頁查詢

💡 大家的想法 · 0

載入中...
💬 即時聊天室 🟢 0 人在線
😀 😎 🤓 💻 🎮 🎸 🔥
➕ 新問題
📋 我的工單
💬 LINE 社群
🔒
需要註冊才能使用此功能
註冊帳號即可解鎖測驗、遊戲、簽到、筆記下載等所有功能,完全免費!
免費註冊