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


基础教程推荐
- SQL Server:只有 GROUP BY 中的最后一个条目 2021-01-01
- 无法在 ubuntu 中启动 mysql 服务器 2021-01-01
- 在 VB.NET 中更新 SQL Server DateTime 列 2021-01-01
- ERROR 2006 (HY000): MySQL 服务器已经消失 2021-01-01
- 如何在 SQL Server 的嵌套过程中处理事务? 2021-01-01
- SQL Server 2016更改对象所有者 2022-01-01
- Sql Server 字符串到日期的转换 2021-01-01
- 使用pyodbc“不安全"的Python多处理和数据库访问? 2022-01-01
- SQL Server 中单行 MERGE/upsert 的语法 2021-01-01
- 将数据从 MS SQL 迁移到 PostgreSQL? 2022-01-01