SQL IN语句提取100k记录

时间:2013-12-06 12:45:42

标签: sql oracle

我有一个文件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')

3 个答案:

答案 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文档说:“由于嵌套表没有声明的大小,您可以在构造函数中添加尽可能多的元素 。”