Những gì bạn muốn là một loại điều kiện dừng. Theo như tôi biết thì không có thứ đó trong SQL, ít nhất là phương ngữ của PostgreSQL.
Những gì bạn có thể làm là sử dụng một thủ tục PL / PgSQL để đọc các hàng từ một con trỏ và trả lại chúng cho đến khi điều kiện dừng được đáp ứng. Nó sẽ không quá nhanh, nhưng sẽ ổn thôi. Nó chỉ là một FOR
lặp qua một truy vấn với IF expression THEN exit; ELSE return next; END IF;
. Không cần con trỏ rõ ràng vì PL / PgSQL sẽ sử dụng một con trỏ nội bộ nếu bạn FOR
lặp qua một truy vấn.
Một tùy chọn khác là tạo con trỏ và đọc các phần hàng từ nó trong ứng dụng, sau đó loại bỏ một phần của phần cuối cùng khi điều kiện dừng được đáp ứng.
Dù bằng cách nào, con trỏ sẽ là thứ bạn muốn.
Nhân tiện, một biểu thức dừng thực sự sẽ không quá khó để triển khai trong PostgreSQL. Bạn sẽ phải triển khai loại nút thực thi mới, nhưng hỗ trợ CustomScan mới sẽ khiến điều đó trở nên thực tế trong một tiện ích mở rộng. Sau đó, bạn chỉ cần đánh giá một biểu thức để quyết định có tiếp tục tìm nạp các hàng hay không.