列表中的最大表达式数为 1000

Maximum number of expressions in a list is 1000

我正在尝试从 oracle 数据库中 select 170k 条记录,有一些如何避免这个错误?或任何改进此查询的方法?

谢谢。

 
    select sr.RELATED_PON, srsi.VALID_VALUE 
    from SERV_REQ sr
    inner join SERV_REQ_SI_VALUE srsi
    on sr.DOCUMENT_NUMBER = srsi.DOCUMENT_NUMBER
    inner join SERV_ITEM si
    on si.SERV_ITEM_ID = srsi.SERV_ITEM_ID
    and si.STATUS = '6'
    where srsi.VALUE_LABEL = 'unitAddress'
    and srsi.VALID_VALUE in ('1682511819',
    '1682575135',
    '1682580326'
    ... more than 150k here!
    ) 

Lamak 是正确的:这看起来确实像是属于 table 的列表。

但是,如果出于某种原因这不方便,您必须将 IN 子句分成块,每个块不超过 1000 个元素。令人高兴的是,这非常简单:您每 1000 个项目插入 ) OR ( scri.VALID_VALUE in

不幸的是,您很快就会遇到查询字符串的最大大小。 (对于 Oracle,我认为是 32K)...但是认真考虑临时 table 或其他东西。