使用选择列表查询Oracle

时间:2009-06-25 21:09:23

标签: sql oracle ms-access odbc

我有一个oracle数据库,我有只读访问权限(没有创建临时表的权限)。我有一个28000个ID的选择列表(在Excel中),对应于一个包含数百万条记录的表中的28000行。如何编写查询以返回28000行?

我尝试在访问中创建一个表并通过ODBC执行连接,但Access冻结/花费了不可思议的长时间。我是否必须在IN语句中创建包含28,000个项目的查询?

PL / SQL中有什么东西可以让它变得更容易吗?

感谢您的时间和帮助。

-jc

5 个答案:

答案 0 :(得分:3)

是什么让你的28,000行变得特别?

您可以使用记录中的另一个字段来限制您在WHERE子句中的查询(或者至少缩小数百万行的数量)?也许您感兴趣的ID在一定范围内?

答案 1 :(得分:0)

在Oracle 10g中,IN(..,.. ,,)类型查询的最大变量数为1000。

答案 2 :(得分:0)

尝试在您在Access中创建的表上创建索引。

答案 3 :(得分:0)

这是一个痛苦的条件。一个解决方法是创建一个包含所有ID的视图,然后加入它。

以下示例是Oracle。

WITH
ids AS
(
    SELECT 314 ID FROM DUAL UNION ALL
    SELECT 159 ID FROM DUAL UNION ALL
    SELECT 265 ID FROM DUAL
)
SELECT VALUE1, VALUE2
FROM SOME_TABLE, ids
WHERE SOME_TABLE.ID = ids.ID

这基本上嵌入了with子句中的所有28000个ID,允许您在不实际创建表的情况下进行连接。

丑陋,但它应该有用。

答案 4 :(得分:0)

相关问题