1. Mệnh đề SELECT TOP

Mệnh đề SELECT TOP được sử dụng để xác định số lượng bản ghi sẽ được trả về trong kết quả truy vấn. Các mệnh đề SELECT TOP giúp việc truy vấn dữ liệu tiết kiệm thời gian đối với những bảng có hàng ngàn bản ghi dữ liệu vì kết quả trả về chỉ lấy ra một số lượng kết quả nhất định.

Cú pháp mệnh đề SELECT TOP như sau:

SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;

Trong đó:

  • SELECT TOP là câu lệnh chọn
  • number là số lượng bản ghi cần trả về trong câu lệnh chọn
  • percent column_name(s) là số phần trăm bản ghi cần trả về trong câu lệnh chọn
  • table_name là bảng cần thao tác chọn
  • WHERE condition là điều kiện chọn

Chú ý: Không phải tất cả các hệ quản trị cơ sở dữ liệu đều hỗ trợ mệnh đề SELECT TOP này. Cú pháp trên được dùng cho hệ quản trị SQL Server.

2. Ví dụ mệnh đề SELECT TOP

Dưới đây là bảng KhachHang bao gồm các cột: ID, TenKH, DiaChi, ThanhPho, SoDienThoai

ID TenKH DiaChi ThanhPho SoDienThoai
1 Nguyen Van A Tay Ho Ha Noi 0888999888
2 Nguyen Van B Quan 5 Ho Chi Minh 0988988988
3 Nguyen Van C Quan 7 Ho Chi Minh 0899899899
4 Nguyen Van D Bac Tu Liem Ha Noi 0788788788
5 Nguyen Van E Ngo Quen Hai Phong 0858585858
6 Nguyen Van F Ngu Hanh Son Da Nang 0969696969
7 Nguyen Van G Tay Ho Ha Noi 0838383838

Câu lệnh SQL dưới đây sẽ chọn ra 3 bản ghi đầu tiên trong bảng KhachHang

SELECT TOP 3 * FROM KhachHang;

Kết quả như sau:

ID TenKH DiaChi ThanhPho SoDienThoai
1 Nguyen Van A Tay Ho Ha Noi 0888999888
2 Nguyen Van B Quan 5 Ho Chi Minh 0988988988
3 Nguyen Van C Quan 7 Ho Chi Minh 0899899899

Ta hoàn toàn có thể kết hợp với mệnh đề ORDER BY trong câu lệnh SELECT TOP như sau:

SELECT TOP 3 * FROM KhachHang ORDER BY TenKH DESC;

Khi câu truy vấn trên được thực thi, các bản ghi sẽ được chọn từ cuối (vì được ORDER BY TenKH DESC) và với 3 bản ghi cuối của bảng KhachHang

Kết quả như sau:

ID TenKH DiaChi ThanhPho SoDienThoai
7 Nguyen Van G Tay Ho Ha Noi 0838383838
6 Nguyen Van F Ngu Hanh Son Da Nang 0969696969
5 Nguyen Van E Ngo Quen Hai Phong 0858585858

Trong trường hợp, ta cần lấy ra số lượng bản ghi trong bảng KhachHang theo số phần trăm(%) ta có thể sử dụng câu lệnh như sau để lấy 50% bản ghi đầu tiên

SELECT TOP 50 PERCENT * FROM KhachHang;

Kết quả:

ID TenKH DiaChi ThanhPho SoDienThoai
1 Nguyen Van A Tay Ho Ha Noi 0888999888
2 Nguyen Van B Quan 5 Ho Chi Minh 0988988988
3 Nguyen Van C Quan 7 Ho Chi Minh 0899899899
4 Nguyen Van D Bac Tu Liem Ha Noi 0788788788