Tôi đang cố gắng làm một cái gì đó như:
SELECT * FROM table LIMIT 10,20
hoặc là
SELECT * FROM table LIMIT 10 OFFSET 10
nhưng sử dụng SQL Server
Giải pháp duy nhất tôi thấy giống như quá mức cần thiết:
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM sys.databases
) a WHERE row > 5 and row <= 10
Tôi cũng tìm thấy :
SELECT TOP 10 * FROM stuff;
... nhưng đó không phải là điều tôi muốn làm vì tôi không thể chỉ định giới hạn bắt đầu.
Có cách nào khác để tôi làm điều đó?
Ngoài ra, chỉ tò mò, có lý do tại sao SQL Server không hỗ trợ LIMIT
chức năng hoặc một cái gì đó tương tự không? Tôi không muốn có ý xấu, nhưng điều đó thực sự nghe giống như một thứ mà DBMS cần ... Nếu có, thì tôi xin lỗi vì đã quá thờ ơ! Tôi đã làm việc với MySQL và SQL + trong 5 năm qua nên ...
ROW_NUMBER()
và giới hạnTOP
độ rộng của phạm vi vàWHERE
điều kiện cho giới hạn của phạm vi là tốt nhất tôi có thể đạt được. Tôi cũng nhận thấy hiệu suất tốt hơn nhiều nếuTOP
mệnh đề sử dụng một chữ thay vì biến