SQL - LIMIT 子句



SQL LIMIT 子句

SQL LIMIT 子句用於限制 SELECT 語句返回的行數。此外,我們還可以將其與 UPDATE 和 DELETE 語句一起使用以限制(約束)結果記錄。

例如,如果資料庫表中儲存了大量行,並且您只想獲取一定數量的行,例如前 10 行,則可以在查詢中使用 LIMIT 子句。

Microsoft SQL Server 不支援 LIMIT 子句。我們可以使用 TOP 子句從 MS SQL Server 資料庫中的表中選擇有限數量的記錄。類似地,Oracle 支援 ROWNUM 子句來限制表的記錄。

語法

以下是帶有 SELECT 語句的 SQL LIMIT 子句的基本語法:

SELECT column_name(s)
FROM table_name
WHERE [condition]
LIMIT value;

其中,value 是要從頂部返回的行數。

示例

假設我們建立了一個名為 CUSTOMERS 的表,其中包含客戶的個人詳細資訊,包括他們的姓名、年齡、地址和薪水等,如下所示:

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

現在,使用 INSERT 語句將值插入此表,如下所示:

INSERT INTO CUSTOMERS VALUES
   (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
   (2, 'Khilan', 25, 'Delhi', 1500.00 ),
   (3, 'Kaushik', 23, 'Kota', 2000.00 ),
   (4, 'Chaitali', 25, 'Mumbai', 6500.00 ),
   (5, 'Hardik', 27, 'Bhopal', 8500.00 ),
   (6, 'Komal', 22, 'Hyderabad', 4500.00 ),
   (7, 'Muffy', 24, 'Indore', 10000.00 );

表將建立如下:

ID 姓名 年齡 地址 薪水
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 Hyderabad 4500.00
7 Muffy 24 Indore 10000.00

現在,我們使用 LIMIT 子句從 CUSTOMERS 表中獲取前 3 條記錄,無需指定任何子句(以過濾資料),例如 WHERE、ORDER BY 等:

SELECT * FROM CUSTOMERS LIMIT 3;

輸出

這將產生以下結果:

ID 姓名 年齡 地址 薪水
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00

帶有 ORDER BY 子句的 LIMIT

SQL 中的 ORDER BY 子句用於按升序或降序對查詢的結果集進行排序。我們可以在 MySQL 資料庫中將其與 LIMIT 子句一起使用以按排序順序檢索(或更新或刪除等)前 N 個記錄。

示例

使用以下查詢,我們按排序順序檢索 CUSTOMERS 表的前 4 條記錄。在這裡,我們根據 AGE 列按升序對錶進行排序:

SELECT * FROM CUSTOMERS ORDER BY AGE ASC LIMIT 4;

輸出

我們獲得如下結果:

ID 姓名 年齡 地址 薪水
6 Komal 22 Hyderabad 4500.00
3 Kaushik 23 Kota 2000.00
7 Muffy 24 Indore 10000.00
2 Khilan 25 Delhi 1500.00

注意 - ORDER BY 子句預設按升序排序資料。因此,如果我們需要按降序對 SQL 中的資料進行排序,則必須使用 DESC 關鍵字。

帶有 WHERE 子句的 LIMIT

我們可以將 LIMIT 子句與 WHERE 子句一起使用以限制給定數量的行並根據指定的條件對其進行過濾。

示例

以下查詢從 CUSTOMERS 表中檢索前兩個客戶的詳細資訊,其姓名以 K 開頭:

SELECT * FROM CUSTOMERS WHERE NAME LIKE 'k%' LIMIT 2;

輸出

產生以下結果:

ID 姓名 年齡 地址 薪水
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00

LIMIT 子句與 DELETE 語句

在 MySQL 資料庫中,LIMIT 子句可以與 DELETE 語句一起使用以刪除滿足給定條件的特定數量的行。

示例

在以下查詢中,我們使用帶有 LIMIT 子句的 DELETE 語句。在這裡,我們刪除了前 2 個姓名以 K 開頭的客戶:

DELETE FROM CUSTOMERS WHERE NAME LIKE 'K%' LIMIT 2;

輸出

我們得到如下所示的輸出:

Query OK, 2 rows affected (0.01 sec)

驗證

我們可以透過使用 SELECT 語句檢索其內容來驗證更改是否反映在表中。以下是顯示 CUSTOMERS 表中記錄的查詢:

SELECT * FROM CUSTOMERS;

表顯示如下:

ID 姓名 年齡 地址 薪水
1 Ramesh 32 Ahmedabad 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
7 Muffy 24 Indore 10000.00
廣告