Trong SQL Server, lệnh SELECT TOP dùng để truy xuất bản ghi từ một hoặc nhiều bảng trong SQL Server và giới hạn số bản ghi trả về dựa trên giá trị cố định hoặc phần trăm.
Cú pháp lệnh SELECT TOP
SELECT TOP (gia_tri_dau) [PERCENT] [WITH TIES]
bieu_thuc
FROM bang
[WHERE dieu_kien]
[ORDER BY bieu_thuc [ ASC | DESC ]];
Tham số
TOP (gia_tri_dau): Trả về kết quả dựa trên gia_tri_dau. Ví dụ TOP (10) lấy 10 hàng đầu từ tập kết quả.
PERCENT: Tùy chọn. Nếu chỉ định, hàng đầu dựa trên phần trăm gia_tri_dau của tập kết quả. Ví dụ TOP (10) PERCENT lấy 10% hàng đầu.
WITH TIES: Tùy chọn. Nếu dùng mệnh đề này, các hàng có giá trị bằng hàng cuối trong tập kết quả cũng sẽ được trả về. Có thể khiến số hàng trả về nhiều hơn TOP cho phép.
bieu_thuc: Cột hoặc giá trị tính toán muốn truy xuất.
bang: Bảng muốn lấy bản ghi. Phải có ít nhất 1 bảng trong mệnh đề FROM.
WHERE dieu_kien: Tùy chọn. Điều kiện bản ghi phải thỏa mãn để được chọn.
ORDER BY bieu_thuc: Tùy chọn. Dùng để sắp xếp kết quả. ASC tăng dần, DESC giảm dần.
Ví dụ – dùng từ khóa TOP
SELECT TOP(5)
nhanvien_id, ho, ten
FROM nhanvien
WHERE ho = 'Anderson'
ORDER BY nhanvien_id;
Ví dụ trên truy xuất 5 bản ghi đầu tiên trên bảng khi họ là Anderson. Nếu các bản ghi khác cũng họ Anderson, chúng không được trả về trong câu SELECT.
Ví dụ trên có thể sửa bằng cách thêm mệnh đề WITH TIES:
SELECT TOP(5) WITH TIES
nhanvien_id, ho, ten
FROM nhanvien
WHERE ho = 'Anderson'
ORDER BY nhanvien_id;
Ví dụ này sẽ trả về thêm các hàng có giá trị bằng hàng cuối trong tập kết quả.
Ví dụ – dùng từ khóa TOP PERCENT
SELECT TOP(10) PERCENT
nhanvien_id, ho, ten
FROM nhanvien
WHERE ho = 'Anderson'
ORDER BY nhanvien_id;
Ví dụ này trả về 10% đầu tập kết quả ghi trong bảng nhân viên trong số nhân viên có họ Anderson. 90% còn lại không được trả về.
SELECT TOP(10) PERCENT WITH TIES
nhanvien_id, ho, ten
FROM nhanvien
WHERE ho = 'Anderson'
ORDER BY nhanvien_id;
Với WITH TIES, kết quả trả về sẽ có thêm các hàng trùng giá trị với hàng cuối. Tập kết quả lúc này sẽ nhiều hơn 10%.