具有 20000 个值的 SQL 子句 [英] SQL In Clause with 20000 values

查看:42
本文介绍了具有 20000 个值的 SQL 子句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含 20000 个 ID 的 xls

I have a xls with 20000 IDs

我需要在 Col1 中提取具有这些 ID 的表的行

I need to extract the rows of a table that have these IDs in Col1

在 Oracle SQL 中是否有一种聪明的方法可以做到这一点?

Is there a clever way to do this in Oracle SQL ?

我对该数据库只有读权限.

I only have a read access to this db.

我想对 20000 个 ID 进行切片,以便将前 1000 个放在变量 p_list1 中,将下一个 1000 个放在变量 p_list2 中,等等,然后使用 IN 子句和联合来获得整个结果

I thought to slice the 20000 IDs, in order to put the first 1000 in a variable p_list1 , the next 1000 in a variable p_list2, ect and use a IN clause and union to get the whole result

但我不习惯在查询中使用参数.

But I'm not used to use paramters in my query.

你能看一下吗?

预先感谢您的帮助

DECLARE
             p_list1 VARCHAR2(10) := '''id1''','''id2''','''id3''',..ect 
BEGIN
execute immediate 'select * from table1 where Col1 in ('|| p_list ||')' ;
END;

推荐答案

如果可以创建临时表,可以这样进行:

If you can create a temporary table, you can proceed in this way:

  1. 创建临时表
  2. 使用 EXISTS 子句重新编写查询,如下所示:

 SELECT * 
 FROM table1 
 WHERE EXISTS(select 1 from temp_table tt WHERE tt.id = table1.Col1)

这篇关于具有 20000 个值的 SQL 子句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆