Lệnh TOP trong SQL

Trong SQL, câu lệnh TOP được sử dụng để lấy ra N bản ghi hoặc X phần trăm bản ghi từ một bảng.

Lưu ý: Tất cả các database không hỗ trợ mệnh đề TOP. Ví dụ như MySQL hỗ trợ mệnh đề LIMIT để lấy ra số lượng hạn chế các bản ghi, trong khi Oracle sử dụng lệnh ROWNUM để thực hiện cùng thao tác này.

Ở bài viết này sẽ hướng dẫn chi tiết cho bạn cách sử dụng câu lệnh TOP trong SQL với cú pháp và những ví dụ cụ thể để dễ hình dung và nắm bắt hàm tốt hơn.

Cú pháp lệnh TOP trong SQL

Cú pháp cơ bản của lệnh TOP với câu lệnh SELECT sẽ như sau:

SELECT TOP so|phantram tencot FROM ten_bang WHERE [dieu_kien]

Ví dụ về TOP trong SQL

Giả sử bảng NHANVIEN có các bản ghi như sau:

 +----+----------+-----+-----------+----------+
 | ID | TEN      |TUOI | DIACHI    | LUONG    |
 +----+----------+-----+-----------+----------+
 |  1 | Thanh    |  32 | Haiphong  |  2000.00 |
 |  2 | Loan     |  25 | Hanoi     |  1500.00 |
 |  3 | Nga      |  23 | Hanam     |  2000.00 |
 |  4 | Manh     |  25 | Hue       |  6500.00 |
 |  5 | Huy      |  27 | Hatinh    |  8500.00 |
 |  6 | Cao      |  22 | HCM       |  4500.00 |
 |  7 | Lam      |  24 | Hanoi     | 10000.00 |
 +----+----------+-----+-----------+----------+

Truy vấn sau đây là một ví dụ trên máy chủ SQL, nó sẽ lấy ra 3 bản ghi đầu tiên từ bảng NHANVIEN.

SQL> SELECT TOP 3 * FROM NHANVIEN;

Ví dụ trên trả về kết quả:

 +----+----------+-----+-----------+----------+
 | ID | TEN      |TUOI | DIACHI    | LUONG    |
 +----+----------+-----+-----------+----------+
 |  1 | Thanh    |  32 | Haiphong  |  2000.00 |
 |  2 | Loan     |  25 | Hanoi     |  1500.00 |
 |  3 | Nga      |  23 | Hanam     |  2000.00 |
 +----+----------+-----+-----------+----------+

Đối với máy chủ MySQL thì đây là một ví dụ tương đương:

SQL> SELECT * FROM NHANVIEN LIMIT 3;

Kết quả trả về tương tự:

 +----+----------+-----+-----------+----------+
 | ID | TEN      |TUOI | DIACHI    | LUONG    |
 +----+----------+-----+-----------+----------+
 |  1 | Thanh    |  32 | Haiphong  |  2000.00 |
 |  2 | Loan     |  25 | Hanoi     |  1500.00 |
 |  3 | Nga      |  23 | Hanam     |  2000.00 |
 +----+----------+-----+-----------+----------+

Nếu bạn đang sử dụng Oracle Server, thì đây là một ví dụ tương đương:

SQL> SELECT * FROM NHANVIEN WHERE ROWNUM <= 3;

Kết quả trả về tương tự:

 +----+----------+-----+-----------+----------+
 | ID | TEN      |TUOI | DIACHI    | LUONG    |
 +----+----------+-----+-----------+----------+
 |  1 | Thanh    |  32 | Haiphong  |  2000.00 |
 |  2 | Loan     |  25 | Hanoi     |  1500.00 |
 |  3 | Nga      |  23 | Hanam     |  2000.00 |
 +----+----------+-----+-----------+----------+