列表中的最大表达式数为 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 或其他东西。
我正在尝试从 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 或其他东西。