Tôi có một câu lệnh SQL mà tôi muốn lấy dữ liệu 1200 ep_codes
bằng cách sử dụng mệnh đề IN
. Khi tôi bao gồm hơn 1000 ep_codes
bên trong mệnh đề IN, Oracle cho biết tôi không được phép làm điều đó. Để khắc phục điều này, tôi đã cố gắng để thay đổi mã SQL như sau:Oracle SQL: Cách sử dụng hơn 1000 mục bên trong mệnh đề IN
SELECT period, ...
FROM my_view
WHERE period = '200912'
...
AND ep_codes IN (...1000 ep_codes...)
OR ep_codes IN (...200 ep_codes...)
Mã này đã được thực hiện thành công nhưng kết quả là lạ (kết quả tính toán được tìm nạp cho tất cả các giai đoạn, không chỉ cho 200.912, mà không phải là những gì tôi muốn). Có thích hợp để thực hiện điều đó bằng cách sử dụng OR
giữa các điều khoản IN
hoặc tôi nên thực thi hai mã riêng biệt là một với 1000 và mã còn lại có 200 tập mã không?
Giải pháp của Pascal Martin hoạt động hoàn hảo. Cảm ơn tất cả những người đóng góp với các đề xuất có giá trị.
Tôi đã cập nhật câu hỏi để làm cho mọi việc rõ ràng về kết quả kỳ lạ. Bây giờ tôi đang thử mã như bạn đã đề xuất (có thêm dấu ngoặc đơn). Ngay sau khi kết quả được tìm nạp, tôi sẽ cho bạn biết. –
Cảm ơn, nó hoạt động OK ngay bây giờ. Một lần nữa tôi thấy rằng các dấu ngoặc phụ thêm là rất quan trọng. –
Bạn được chào đón :-) - có, dấu ngoặc đơn có thể hữu ích ;-) –