SQL ROWNUM

Hiểu biết cơ bản về ROWNUM trong SQL

ROWNUM là một pseudo cột trong SQL được sử dụng để đánh số các hàng trong một kết quả truy vấn. Nó có thể hữu ích trong nhiều tình huống, chẳng hạn như khi bạn cần giới hạn số lượng dòng trả về hoặc khi bạn muốn tạo ra một thứ tự cụ thể cho các hàng trong bảng. Tuy nhiên, ROWNUM có những quy tắc riêng và cần được sử dụng một cách cẩn thận.

Định nghĩa ROWNUM

ROWNUM là một giá trị được gán cho mỗi hàng trong kết quả của một truy vấn ngay khi hàng đó được chọn. Giá trị của ROWNUM bắt đầu từ 1 cho hàng đầu tiên, sau đó tăng lên 1 cho mỗi hàng tiếp theo. Nó chỉ được số hóa khi kết quả được trả về, do đó một hàng trong một truy vấn có thể có giá trị ROWNUM khác nếu nó được truy vấn theo một cách khác.

Cú pháp sử dụng ROWNUM

Cú pháp cơ bản để sử dụng ROWNUM trong SQL như sau:

SELECT *
FROM ten_bang
WHERE ROWNUM <= gia_tri;

Trong đó, ten_bang là tên bảng bạn muốn truy vấn và gia_tri là số lượng hàng tối đa mà bạn muốn trả về.

Ví dụ về ROWNUM

Dưới đây là một số ví dụ cụ thể về việc sử dụng ROWNUM trong SQL:

Ví dụ 1: Lấy 5 bản ghi đầu tiên từ bảng

SELECT *
FROM nhan_vien
WHERE ROWNUM <= 5;

Truy vấn này sẽ trả về 5 hàng đầu tiên từ bảng nhan_vien.

Ví dụ 2: Sử dụng ROWNUM để phân trang

Để phát triển tính năng phân trang, bạn có thể kết hợp ROWNUM với các truy vấn phức tạp khác. Ví dụ, để lấy các bản ghi từ hàng thứ 11 đến hàng thứ 20, bạn có thể sử dụng truy vấn con:

SELECT *
FROM (
    SELECT a.*, ROWNUM rnum
    FROM (
        SELECT *
        FROM nhan_vien
        ORDER BY ten
    ) a
    WHERE ROWNUM <= 20
)
WHERE rnum > 10;

Trong ví dụ trên, truy vấn đầu tiên lấy 20 hàng từ bảng nhan_vien và sau đó, truy vấn bên ngoài chỉ lấy các hàng từ hàng thứ 11 đến hàng thứ 20.

Ví dụ 3: Các hạn chế của ROWNUM

Cần lưu ý rằng ROWNUM có thể gây nhầm lẫn khi được sử dụng trong các điều kiện khác nhau. Hãy lấy ví dụ sau:

SELECT *
FROM nhan_vien
WHERE ROWNUM = 1;

Truy vấn này chỉ trả về một hàng duy nhất, nhưng nếu bạn cố gắng sử dụng điều kiện khác như:

SELECT *
FROM nhan_vien
WHERE ROWNUM < 3;

Truy vấn này sẽ không trả về 2 hàng, mà sẽ chỉ trả về 1 hàng đầu tiên vì điều kiện ROWNUM được áp dụng ngay khi hàng được chọn.

Kết luận

ROWNUM là một công cụ mạnh mẽ trong SQL, giúp bạn có thể điều chỉnh số lượng bản ghi trả về trong truy vấn. Tuy nhiên, nó cũng có những hạn chế riêng và cần được sử dụng một cách cẩn thận. Hi vọng qua bài viết này, bạn đã có cái nhìn tổng quan hơn về ROWNUM và cách sử dụng nó trong các truy vấn SQL của mình.