SQL Server: Các Lệnh Giới Hạn Dữ Liệu Trong SQL Server - Comdy
Có thể bạn quan tâm
Table of Contents
- SQL Server: Các lệnh giới hạn dữ liệu trong SQL Server
- OFFSET FETCH trong SQL Server
- Ví dụ về OFFSET và FETCH trong SQL Server
- SELECT TOP trong SQL Server
- Ví dụ về SELECT TOP trong SQL Server
- Sử dụng TOP với giá trị không đổi trong SQL Server
- Sử dụng TOP để trả về tỷ lệ phần trăm của các bản ghi trong SQL Server
- Sử dụng TOP WITH TIES để bao gồm các bản ghi khớp với các giá trị ở bản ghi cuối cùng
- Ví dụ về SELECT TOP trong SQL Server
- OFFSET FETCH trong SQL Server
Trong hướng dẫn này, bạn sẽ học cách sử dụng các lệnh OFFSET FETCH và SELECT TOP trong SQL Server để giới hạn dữ liệu trả về.
OFFSET FETCH trong SQL Server
Các mệnh đề OFFSET và FETCH là các tùy chọn của mệnh đề ORDER BY. Chúng cho phép bạn giới hạn số lượng bản ghi được trả về bởi một truy vấn.
Ví dụ sau đây minh họa cú pháp của mệnh đề OFFSET và FETCH:
ORDER BY column_list [ASC | DESC] OFFSET offset_row_count {ROW | ROWS} FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} ONLYTrong cú pháp này:
- Mệnh đề OFFSET quy định cụ thể số bản ghi bị bỏ qua trước khi bắt đầu trả về các bản ghi từ truy vấn. offset_row_count có thể là một hằng số, biến hoặc tham số lớn hơn hoặc bằng 0.
- Mệnh đề FETCH quy định cụ thể số lượng bản ghi trả về sau khi mệnh đề OFFSET đã được xử lý. fetch_row_count có thể là một hằng số, biến hoặc tham số lớn hơn hoặc bằng 1.
- Mệnh đề OFFSET là bắt buộc trong khi mệnh đềFETCH là tùy chọn. Ngoài ra, FIRST và NEXT là các từ đồng nghĩa tương ứng để bạn có thể sử dụng chúng thay thế cho nhau. Tương tự, bạn có thể sử dụng FIRST và NEXT hoán đổi cho nhau.
Hình ảnh sau đây minh họa các mệnh đề OFFSET và FETCH:
Lưu ý rằng bạn phải sử dụng các mệnh đề OFFSET và FETCH với mệnh đề ORDER BY. Nếu không, bạn sẽ nhận được một lỗi.
Các mệnh đề OFFSET và FETCH được ưu tiên để thực hiện giải pháp truy vấn phân trang hơn mệnh đề TOP.
Các mệnh đề OFFSET và FETCH đã có từ SQL Server 2012 (11.x) trở lên và cơ sở dữ liệu SQL Azure.
Ví dụ về OFFSET và FETCH trong SQL Server
Chúng tôi sẽ sử dụng bảng products từ cơ sở dữ liệu mẫu để làm ví dụ minh họa cho OFFSET và FETCH trong SQL Server.
Truy vấn sau đây trả về tất cả các sản phẩm từ bảng products và sắp xếp các sản phẩm theo giá niêm yết và tên của chúng:
SELECT product_name, list_price FROM production.products ORDER BY list_price, product_name;Đây là kết quả:
Để bỏ qua 10 sản phẩm đầu tiên và trả lại phần còn lại, bạn sử dụng mệnh đề OFFSET như trong câu lệnh sau:
SELECT product_name, list_price FROM production.products ORDER BY list_price, product_name OFFSET 10 ROWS;Đây là kết quả:
Xêm thêm các ví dụ nâng cao về OFFSET và FETCH trong SQL Server ở bài viết sau:
SELECT TOP trong SQL Server
Mệnh đề SELECT TOP cho phép bạn hạn chế số lượng bản ghi hoặc tỷ lệ phần trăm của bản ghi được trả về trong một tập kết quả truy vấn.
Vì thứ tự của các bản ghi được lưu trữ trong một bảng là không xác định, nên câu lệnh SELECT TOP luôn được sử dụng cùng với mệnh đề ORDER BY. Do đó, tập kết quả được giới hạn N bản ghi đầu tiên đã được sắp xếp.
Ví dụ sau đây minh họa cú pháp của mệnh đề TOP với câu lệnh SELECT:
SELECT TOP (expression) [PERCENT] [WITH TIES] FROM table_name ORDER BY column_name;Trong cú pháp này, câu lệnh SELECT có thể có mệnh đề khác như WHERE, JOIN, HAVING và GROUP BY.
Theo sau từ khóa TOP là một biểu thức chỉ định số lượng bản ghi được trả về. Biểu thức được ước tính thành giá trị float nếu PERCENT được sử dụng, nếu không, nó được chuyển đổi thành giá trị BIGINT.
Từ khóa PERCENT chỉ ra rằng truy vấn trả về N phần trăm đầu tiên của các bản ghi, với N là biểu thức expression.
WITH TIES cho phép bạn trả về nhiều bản ghi với giá trị phù hợp với bản ghi cuối cùng trong tập kết quả trả về. Lưu ý rằng WITH TIES có thể khiến nhiều bản ghi được trả về hơn số lượng bạn chỉ định trong biểu thức.
Ví dụ: nếu bạn muốn trả về sản phẩm đắt nhất, bạn có thể sử dụng TOP 1. Tuy nhiên, nếu có hai hoặc nhiều sản phẩm có cùng giá với sản phẩm đắt nhất, thì bạn sẽ bỏ lỡ các sản phẩm đắt nhất khác trong tập kết quả.
Để tránh điều này, bạn có thể sử dụng TOP 1 WITH TIES. Nó sẽ bao gồm không chỉ sản phẩm đắt tiền đầu tiên mà còn bao gồm sản phẩm thứ khác có giá bằng sản phẩm đăt nhất.
Ví dụ về SELECT TOP trong SQL Server
Chúng tôi sẽ sử dụng bảng products từ cơ sở dữ liệu mẫu để làm ví dụ minh họa cho SELECT TOP trong SQL Server.
Sử dụng TOP với giá trị không đổi trong SQL Server
Ví dụ sau sử dụng giá trị không đổi để trả về 10 sản phẩm đắt nhất.
SELECT TOP 10 product_name, list_price FROM production.products ORDER BY list_price DESC;Đây là kết quả:
Sử dụng TOP để trả về tỷ lệ phần trăm của các bản ghi trong SQL Server
Ví dụ sau sử dụng PERCENT để chỉ định số lượng sản phẩm được trả về trong tập kết quả. Bảng production.products có 321 bản ghi, do đó, một phần trăm của 321 là một giá trị thập phân (3.21), SQL Server sẽ làm tròn nó lên thành 4.
SELECT TOP 1 PERCENT product_name, list_price FROM production.products ORDER BY list_price DESC;Đây là kết quả:
Sử dụng TOP WITH TIES để bao gồm các bản ghi khớp với các giá trị ở bản ghi cuối cùng
Câu lệnh sau đây trả về ba sản phẩm đắt nhất:
SELECT TOP 3 WITH TIES product_name, list_price FROM production.products ORDER BY list_price DESC;Đây là kết quả:
Xem thêm về SELECT TOP trong SQL Server tại bài viết:
Trong hướng dẫn này, bạn đã học cách sử dụng lệnh OFFSET FETCH và SELECT TOP trong SQL Server để giới hạn số lượng bản ghi trả về bởi một truy vấn.
Từ khóa » Câu Lệnh Limit Trong Sql Server
-
LIMIT Giới Hạn Kết Quả Trong SQL
-
SQL | LIMIT Giới Hạn Số Lượng Kết Quả Trả Về - Deft Blog
-
Mệnh đề LIMIT Trong MySQL - Học MySQL Online - VietTuts
-
Giới Hạn Kết Quả Trả Về Với LIMIT Trong MySQL
-
[Tự Học SQL] Sử Dụng TOP, LIMIT Or ROWNUM, TOP PERCENT ...
-
Câu Lệnh LIMIT Trong SQL Phổ Biến Như Thế Nào? - HelpEx
-
SQL TOP, LIMIT Or ROWNUM - TRẦN VĂN BÌNH MASTER
-
Lệnh SELECT TOP Trong SQL
-
HƯỚNG DẪN VỀ LỆNH LIMIT VÀ OFFSET TRONG MySQL
-
Tìm Hiểu Về Mệnh Đề TOP, LIMIT, ROWNUM Trong SQL
-
Mệnh đề TOP, LIMIT, ROWNUM Trong SQL
-
SQL Examples - W3Schools
-
Mệnh đề TOP, LIMIT, ROWNUM Trong SQL
-
Chi Tiết Bài Học 07. Hàm LAST Trong SQL - Vimentor