问题描述
我有一个包含 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:
- 创建临时表
- 使用 EXISTS 子句重新编写查询,如下所示:
SELECT *
FROM table1
WHERE EXISTS(select 1 from temp_table tt WHERE tt.id = table1.Col1)
这篇关于具有 20000 个值的 SQL 子句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!