Lệnh SELECT TOP trong SQL Server

2067 lượt xem

Lệnh SELECT TOP được dùng để lấy dữ liệu từ 1 hay nhiều bảng trong SQL SERVER và trả về các dữ liệu được giới hạn dựa trên % cố định hoặc giá trị

1. Cú pháp lệnh SELECT TOP trong lập trình dữ liệu cấu trúc SQL Server

SELECT TOP (giatridau) [PERCENT] [WITH TIES]

bieu_thuc

FROM bang

[WHERE dieukien]

[ORDER BY bieuthuc [ ASC | DESC ]];

2. Tên biến (hoặc giá trị biến)

Biến TOP

TOP (giatridau), lệnh trả về kết quả dựa trên giatridau. Ví dụ TOP(1) sẽ chèn 1 hàng đầu tiên từ kết quả, đây cũng có thể gọi là Select top 1 trong SQL.

Ví dụ thực tế:

SELECT TOP(10)

nhanvien_id, ho, ten

FROM nhanvien

WHERE ho = ‘LÊ’

ORDER BY nhanvien_id;

Lệnh này sẽ lấy 10 dữ liệu đầu tiên trong bảng nhanvien có họ là LÊ. Khi đã lấy đủ 5 dữ liệu thì những dữ liệu khác dù có họ LÊ cũng không được xuất hiện.

Nếu thêm mệnh đề WITH TIES

SELECT TOP(10) WITH TIES

nhanvien_id, ho, ten

FROM nhanvien

WHERE ho = ‘LÊ’

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ả.

Biến PERCENT

Tùy chọn. Nếu sử dụng kết quả trả về sẽ dựa trên % của giatridau. Ví dụ TOP(5) PERCENT sẽ chèn 5% giá trị đầu trong bộ kết quả.

Ví dụ thực tế:

SELECT TOP(20) PERCENT

nhanvien_id, ho, ten

FROM nhanvien

WHERE ho = ‘LÊ’

ORDER BY nhanvien_id;

Ví dụ này sẽ trả về bộ kết quả đúng 20% đầu tiên trong bảng nhanvien trong số các nhân viên có họ là LÊ. 80% còn lại sẽ không được trả về.

Thêm hàm WITH TIES ta có:

SELECT TOP(20) PERCENT WITH TIES

nhanvien_id, ho, ten

FROM nhanvien

WHERE ho = ‘LÊ’

ORDER BY nhanvien_id;

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 20%.

Biến WITH TIES

Tùy chọn. Sử dụng nếu các hàng cuối trong kết quả có giá trị giống với các hàng. Xảy ra khi số hàng trả về nhiều hơn biến TOP

bieuthuc

Cột hoặc giá trị muố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.

Biến WHERE

Điều kiện áp dụng để bản ghi được chọn.

Biến ORDER BY

Dùng để sắp xếp các kết quả trả về theo thứ tự tăng hoặc giảm (ASC hoặc DESC)

Ví dụ cách dùng SELECT TOP trong SQL SERVER

Dùng từ khóa TOP

SELECT TOP(5) nhanvien_id, ho, ten
FROM nhanvien
WHERE ho = 'Anderson'
ORDER BY nhanvien_id;

Lấy ví dụ, lệnh SELECT sẽ chỉ trả về 5 bản ghi đầu tiên từ bảng nhanvien với họ là ‘Anderson’. Nếu trong bảng có nhiều hơn 5 bản ghi khác cũng có họ ‘Anderson’, chúng sẽ không được bao gồm trong kết quả trả về

Ví dụ trên có thể được điều chỉnh bằng cách bổ sung 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 có giá trị tương đương với hàng cuối cùng trong kết quả trả về.