Có cách nào để làm cho một Oracle
truy vấn hoạt động giống như nó chứa một MySQL limit
mệnh đề không?
Trong MySQL
, tôi có thể làm điều này:
select *
from sometable
order by name
limit 20,10
để có được hàng thứ 21 đến 30 (bỏ qua 20 hàng đầu tiên, cho 10 hàng tiếp theo). Các hàng được chọn sau order by
, vì vậy nó thực sự bắt đầu vào tên thứ 20 theo thứ tự abc.
Trong đó Oracle
, điều duy nhất mọi người đề cập đến là rownum
cột giả, nhưng nó được đánh giá trước order by
đó, có nghĩa là:
select *
from sometable
where rownum <= 10
order by name
sẽ trả về một bộ mười hàng ngẫu nhiên theo thứ tự tên, thường không phải là thứ tôi muốn. Nó cũng không cho phép chỉ định bù.
ORDER BY
. Đó là toàn bộ quan điểm đặt hàng đầu tiên. Nếu dữ liệu cơ bản thay đổi và tập kết quả của bạn thay đổi vì nó, tại sao không hiển thị cho người dùng kết quả được cập nhật thay vì thông tin lỗi thời? Ngoài ra, quản lý nhà nước là một bệnh dịch cần tránh càng nhiều càng tốt. Đó là một nguồn phức tạp và lỗi liên tục; đó là lý do tại sao chức năng đang trở nên phổ biến. Và khi nào bạn sẽ biết hết hạn toàn bộ kết quả trong bộ nhớ? Trong web, bạn không có cách nào để biết khi nào người dùng rời đi.