要提取100k条记录的SQL IN语句

要提取100k条记录的SQL IN语句,sql,oracle,Sql,Oracle,我有一个文件SRQ,它有10000个唯一的SRQ_ID。 我有一个表(表1),它有两列,即SRQ\u ID,WORK\u ID。 我需要编写一个查询,它将在表(表1)中搜索文件SRQ中的所有SRQ\u ID,并显示带有相应工作ID的输出 我尝试了下面的代码。但IN条款仅适用于1000条记录。如果我有10万条记录,如何运行相同的程序 select WO_ID from TABLE1 where SRQ_ID in ('B6512DF0','5838FABC','EC5D804C','074DD

我有一个文件SRQ,它有10000个唯一的SRQ_ID。 我有一个表(表1),它有两列,即
SRQ\u ID,WORK\u ID
。 我需要编写一个查询,它将在表(表1)中搜索文件SRQ中的所有SRQ\u ID,并显示带有相应工作ID的输出

我尝试了下面的代码。但IN条款仅适用于1000条记录。如果我有10万条记录,如何运行相同的程序

select WO_ID 
from TABLE1 
where SRQ_ID in ('B6512DF0','5838FABC','EC5D804C','074DD65C')

有什么原因不能使用SRQ_ID在表之间进行连接吗

select wo_id from table1 join srq using srq_id

这将为srq表中具有srq_id值的所有行提供工作id。

如果文件位于数据库服务器上,则您可以将其作为外部表访问,并将两者合并。否则,我建议将代码大容量加载到全局临时表中,并对其执行联接。

如果不想创建临时表,可以使用嵌套表:

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文档说:“因为嵌套表没有声明的大小,所以可以根据需要在构造函数中放入任意多的元素。”

您使用的是什么SQL数据库?@StingyJack似乎是PostgreSQL@deadlock-1K限制是postgres的事情吗?@deadlock:我没有看到任何迹象表明这是针对postgres的。从“适用于1000条记录”判断,我实际上认为这是Oracle,因为Oracle只允许在运算符中的
中使用1000个文本值,而没有RDBMS,这不清楚您在问什么。对于RDBMS,它是重复的。只需使用搜索引擎查找答案并删除此问题。这是重复的100次。我们应该检查产品环境,这就是为什么我不愿意选择。。。