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

时间:2015-03-25 20:53:53

标签: sql oracle-sqldeveloper

我试图从oracle数据库中选择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!
    ) 

1 个答案:

答案 0 :(得分:0)

Lamak是正确的:这看起来像一个属于表格的列表。

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

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