我有一个文件SRQ,其中有10000个SRQ_ID是唯一的。
我有一个表(TABLE1),它有2列,即SRQ_ID,WORK_ID
。
我需要编写一个查询,它将在表(TABLE1)中搜索文件SRQ中的所有SRQ_ID,并将显示带有相应WORK_ID的输出。
我尝试了以下代码。但IN子句仅适用于1000条记录。如果我有100k记录,如何运行相同的?
select WO_ID
from TABLE1
where SRQ_ID in ('B6512DF0','5838FABC','EC5D804C','074DD65C')
答案 0 :(得分:0)
您是否有理由不能使用SRQ_ID在表之间进行连接?
select wo_id from table1 join srq using srq_id
这将为您提供srq表中具有srq_id值的所有行的工作ID。
答案 1 :(得分:0)
如果数据库服务器上的文件然后您可以作为外部表访问它,并加入这两个。否则,我建议将代码批量加载到全局临时表中并对其执行连接。
答案 2 :(得分:0)
如果您不想创建临时表,可以使用嵌套表:
CREATE OR REPLACE TYPE VARCHAR_TABLE_TYPE AS TABLE OF VARCHAR2(20);
select WO_ID
from TABLE1
where SRQ_ID MEMBER OF VARCHAR_TABLE_TYPE('B6512DF0','5838FABC','EC5D804C','074DD65C');
但我不知道初始化嵌套表的限制。 Oracle文档说:“由于嵌套表没有声明的大小,您可以在构造函数中添加尽可能多的元素 。”