Lệnh SELECT TOP trong SQL Server
Trong SQL Server, lệnh SELECT TOP được dùng để lấy bản ghi từ 1 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ị hoặc phần trăm cố định. Cú pháp lệnh SELECT TOP SELECT TOP (giatri_dau) [PERCENT] [WITH TIES] bieu_thuc FROM bang ...
Trong SQL Server, lệnh SELECT TOP được dùng để lấy bản ghi từ 1 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ị hoặc phần trăm cố định.
Cú pháp lệnh SELECT TOP
SELECT TOP (giatri_dau) [PERCENT] [WITH TIES]
bieu_thuc
FROM bang
[WHERE dieu_kien]
[ORDER BY bieu_thuc [ ASC | DESC ]];
Tên biến hoặc giá trị biến
TOP (giatri_dau)
Trả về kết quả dựa trên giatri_dau. Ví dụ TOP(10) sẽ chèn 10 hàng đầu tiên từ bộ kết quả.
PERCENT
Tùy chọn. Nếu được nêu ra cụ thể thì các hàng đầu tiên dựa trên số phần trăm giatri_dau của bộ kết quả. Ví dụ như TOP(10) PERCENT sẽ chèn 10% giá trị đầu trong bộ kết quả.
WITH TIES
Tùy chọn. Nếu dùng mệnh đề này, các hàng có giá trị giống với hàng cuối cùng trong bộ kết quả sẽ được trả về. Điều này có thể gây ra tình huống số hàng trả về nhiều hơn biến TOP cho phép.
bieu_thuc
Cột hoặc giá trị tính toán cần lấy về
bang
Bảng muốn lấy bản ghi từ đó. Phải có ít nhất 1 bảng trong mệnh đề FROM.
WHERE dieu_kien
Tùy chọn. Điều kiện phải được đáp ứng để bản ghi được chọn.
ORDER BY bieu_thuc
Tùy chọn. Dùng để xếp thứ tự kết quả. ASC theo thứ tự tăng dần, DESC theo thứ tự 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 sẽ lấy về 5 bản ghi đầu tiên trên bảng nhanvien khi có họ là Anderson. Nếu các bản ghi khác cũng có họ nhân viên là Anderson thì cũng không được trả về trong lệnh SELECT trên.
Ví dụ trên có thể chỉnh sửa 1 chút 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ề các hàng giống với hàng cuối trong bộ 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 sẽ trả về bộ kết quả là 10% đầu tiên bản ghi trong bảng nhân viên trong số các nhân viên có họ là Anderson. 90% còn lại sẽ 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ó các hàng giống với hàng cuối trong bộ kết quả. Bộ kết quả khi đó sẽ nhiều hơn 10%.
Bài trước: Mệnh đề HAVING trong SQL Server
Bài sau: Lệnh SELECT INTO trong SQL Server