怎麼限制查詢回傳的資料列數量?如果你只想要前 5 個學生、薪水最高的員工,或是前 10 名的產品清單,那 LIMIT 這個指令就超好用啦!
當你在玩資料庫的時候,查詢結果可能會超級多資料。這時候就很需要限制回傳的資料量,這樣可以:
- 減少伺服器和網路的負擔。
- 分析資料時不用一直滑到天荒地老。
簡單比喻一下:想像你在酒吧想請一個女生喝酒,結果不小心幫全場的人買單。雖然很猛,但你真的需要那麼多女生嗎?所以我們要學會只點 自己需要的東西,這時 LIMIT 就派上用場啦。
基本語法 LIMIT
語法長這樣:
SELECT 欄位1, 欄位2
FROM 表格
LIMIT 資料列數量;
範例 1:限制資料筆數
假設我們有一個 students 表格,有 1000 筆資料。我們只想看前 3 筆:
SELECT *
FROM students
LIMIT 3;
結果:
| id | name | age |
|---|---|---|
| 1 | Otto | 20 |
| 2 | Anna | 22 |
| 3 | Alex | 19 |
超簡單:不用看一大串,只看到三筆。LIMIT 回傳你指定的資料列數。
LIMIT 的實用應用
範例 2:熱門產品
你在處理 products 產品表,想知道最貴的五個商品名稱和價格。先照價格從高到低排序,再用 LIMIT 限制結果:
SELECT product_name, price
FROM products
ORDER BY price DESC
LIMIT 5;
結果:
| product_name | price |
|---|---|
| iPhone 16 Pro Max | 1500 |
| MacBook Pro | 1200 |
| AirPods Pro | 300 |
| iPad Pro | 280 |
| Apple Watch | 250 |
現在你只看到價格最高的前五名產品。
LIMIT 怎麼幫你測試查詢
寫 SQL 查詢時,常常會遇到一堆資料。LIMIT 讓你可以先回傳一小部分資料,檢查查詢邏輯對不對。例如:
SELECT *
FROM transactions_log
LIMIT 10;
確認查詢沒問題後,就可以把 LIMIT 拿掉啦。
LIMIT 使用小細節
1. LIMIT 沒有 ORDER BY
如果你沒加 ORDER BY,LIMIT 回傳的資料順序會是隨機的——其實就是表格裡原本的順序。通常沒差,但有時候會很難預測。
像這樣:
SELECT name, age
FROM students
LIMIT 3;
沒加 ORDER BY,你根本不知道會拿到哪三筆。
想避免這種情況,就加 ORDER BY:
SELECT name, age
FROM students
ORDER BY age DESC
LIMIT 3;
2. 跟 WHERE 一起用
我們可以用 WHERE 過濾資料,再用 LIMIT 限制結果。這超方便,當資料太多時,只想看前幾個符合條件的。
SELECT *
FROM students
WHERE age > 18
LIMIT 5;
這個查詢會回傳前五個年齡大於 18 歲的學生。
3. 實用場景:顯示第一頁資料
如果你在做資料顯示系統(像是 web app),LIMIT 可以拿來顯示第一頁的資料。
SELECT *
FROM employees
ORDER BY hire_date
LIMIT 10;
這樣你就會拿到依照入職日期排序的前 10 位員工。
進階範例:LIMIT 搭配聚合函數
假設你想列出最熱門的三個商品類別:
SELECT category, COUNT(*) AS total_products
FROM products
GROUP BY category
ORDER BY total_products DESC
LIMIT 3;
這個查詢會先把商品依類別分組,照數量排序,然後只留三筆。
GROUP BY 跟 COUNT() 怎麼用,之後的課程會再講。
用 LIMIT 會遇到的常見錯誤
用 LIMIT 時,可能會遇到幾個問題:
「資料列順序亂掉」:如果你忘了加 ORDER BY,資料可能會亂七八糟。只要順序很重要,就一定要加排序。
「重要資料被切掉」:比如排序欄位有重複值時,LIMIT 可能會漏掉一些資料。這時可以多加一個排序條件,避免這種情況。
SELECT *
FROM students
ORDER BY age DESC, name ASC
LIMIT 5;
「跟 WHERE 搭配怪怪的」有時候過濾條件太嚴格,LIMIT 就沒什麼意義。像 WHERE 只回傳 2 筆,但 LIMIT 寫 10,還是只會拿到 2 筆。
「跟資料庫有關」有些資料庫有不同的語法(像 SQL Server 用 TOP)。PostgreSQL 就是用 LIMIT。
現實生活中 LIMIT 有什麼用?
大量資料的介面:想像你在網購網站分頁看商品。第一頁只顯示 10 筆,就是靠 LIMIT。
報表:很多時候你只想看前幾名(像前五名員工、銷售冠軍、分數最高的學生)。
查詢測試和優化:不用處理幾百萬筆資料,只要先用小樣本測試查詢就好。
GO TO FULL VERSION