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 |