CodeGym /課程 /SQL SELF /限制資料列數量(LIMIT)和結果管理

限制資料列數量(LIMIT)和結果管理

SQL SELF
等級 3 , 課堂 0
開放

怎麼限制查詢回傳的資料列數量?如果你只想要前 5 個學生、薪水最高的員工,或是前 10 名的產品清單,那 LIMIT 這個指令就超好用啦!

當你在玩資料庫的時候,查詢結果可能會超級多資料。這時候就很需要限制回傳的資料量,這樣可以:

  1. 減少伺服器和網路的負擔。
  2. 分析資料時不用一直滑到天荒地老。

簡單比喻一下:想像你在酒吧想請一個女生喝酒,結果不小心幫全場的人買單。雖然很猛,但你真的需要那麼多女生嗎?所以我們要學會只點 自己需要的東西,這時 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 BYLIMIT 回傳的資料順序會是隨機的——其實就是表格裡原本的順序。通常沒差,但有時候會很難預測。

像這樣:

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 BYCOUNT() 怎麼用,之後的課程會再講。

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

報表:很多時候你只想看前幾名(像前五名員工、銷售冠軍、分數最高的學生)。

查詢測試和優化:不用處理幾百萬筆資料,只要先用小樣本測試查詢就好。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION