2011-09-05 30 views
6

Tôi đang cố gắng tìm nạp một bộ bản ghi khổng lồ từ Teradata bằng JDBC. Và tôi cần phải chia bộ này thành các phần mà tôi đang sử dụng mệnh đề "Top N" trong lựa chọn. Nhưng tôi không biết làm thế nào để thiết lập các "Offset" như thế nào chúng ta làm trong MySQL -Siêu dữ liệu - giới hạn kết quả bằng cách sử dụng TOP

SELECT * FROM tbl LIMIT 5,10 

để lựa chọn công bố tiếp theo sẽ lấy cho tôi những hồ sơ từ (N + 1) vị trí thứ.

Trả lời

5

RANK và đủ điều kiện Tôi tin rằng là bạn của bạn ở đây

ví dụ

SEL RANK(custID), custID 
FROM mydatabase.tblcustomer 
QUALIFY RANK(custID) < 1000 AND RANK(custID) > 900 
ORDER BY custID; 

RANK (lĩnh vực) sẽ (theo lý thuyết) lấy tất cả các hàng của resultset, sắp xếp chúng theo các ORDER BY lĩnh vực và chỉ định ID xếp hạng gia tăng cho chúng.

QUALIFY cho phép bạn cắt bằng cách giới hạn các hàng được trả về biểu thức đủ điều kiện, bây giờ có thể xem RANK một cách hợp pháp.

Để được rõ ràng, tôi trả lại hàng 900-1000th trong truy vấn chọn tất cả các từ cusotmers, KHÔNG trở về khách hàng với ID giữa 900 và 1000.

+0

cảm ơn. đây là những gì tôi đang tìm kiếm. – Aanand

+0

Tôi sẽ đề nghị sử dụng phiên bản tổng hợp cửa sổ của 'RANK ({column})' trong tương lai. RANK như được hiển thị trong câu trả lời này đã không được chấp nhận kể từ Teradata 12. 'RANK() OVER (ORDER BY custID) AS Xếp hạng_' và sau đó' CHALIFY trên Rank_ BETWEEN 900 AND 1000'. Nếu bạn bao gồm mệnh đề 'PARTITION BY' (tùy chọn), bạn có thể đặt lại thứ hạng khi bộ phân đoạn cột thay đổi. Hãy nhớ rằng nếu cột bạn đang đặt hàng không phải là RANK duy nhất sẽ không cung cấp cho bạn chuỗi thuần túy. –

5

Bạn cũng có thể sử dụng tổng hợp ROW_NUMBER cửa sổ trên Teradata.

SELECT ROW_NUMBER() OVER (ORDER BY custID) AS RowNum_ 
    , custID 
    FROM myDatabase.myCustomers 
QUALIFY RowNum_ BETWEEN 900 and 1000; 

Khác với RANK cửa sổ tổng hợp, ROW_NUMBER sẽ cung cấp cho bạn một chuỗi bất kể cột bạn đang đặt trên các thiết lập phân vùng tùy chọn là duy nhất hay không.

Chỉ một tùy chọn khác để xem xét.

Các vấn đề liên quan