【问题标题】:To fetch more than 1000 records using an IN clause [duplicate]使用 IN 子句获取超过 1000 条记录 [重复]
【发布时间】:2013-03-30 08:36:34
【问题描述】:

我在 oracle 数据库上使用 sql developer。我的要求是使用我拥有的主键 ID 一次提取 8000 多行。 sql developer 不允许我一次获取超过 1000 个。我所能做的就是添加一个 OR 并最多提取 2000(1000+1000)。有没有更好的方法一次拉所有?

如果需要使用临时表,在oracle中如何处理?

Select * from X where ID in (1,2,...1000) OR ID IN (1001,1002,...2000);

谢谢

【问题讨论】:

  • 一定要使用IN吗?为什么不BETWEEN 0 AND 8000
  • ID 来自哪里 - 另一个表?传递给脚本或过程? 8000 是很多需要手动管理和维护的值。如果它们是连续的,那么您可以使用 between 但不清楚您提供的值是否只是示例?
  • 我还记得我们之前使用了 IN 关键字,但你应该注意它,因为它有最大数量的争论
  • Tikkes,我不能使用 BETWEEN,因为我的主键 ID 不是一个范围。它们不遵循系列模式。
  • "sql developer 不允许我一次获取超过 1000 个。"不。 Sql 开发人员允许您获取尽可能多的行,只要您有内存。您可以获取数百万行。

标签: sql oracle oracle-sqldeveloper


【解决方案1】:

将所有ID 放入临时表

然后执行SELECT查询WHERE id IN (SELECT id FROM )

应该可以。

例如在 Oracle 中创建 TEMP TABLE:

CREATE TABLE `temp`
   AS SELECT distinct `id` FROM `<your table>`;

干杯。

【讨论】:

  • :)不客气。
  • 1.如何创建临时表? 2. 我是否使用 sql JOIN 来连接临时表和感兴趣的表,然后使用 SELECT 语句。对不起,我有点糊涂了。
  • create table #t(id int)
  • 是的 Luv 是对的 - 但是我在主体中放入了一个速记创作/人口 ^^^^^^
  • 您的 Temp 表应以 # 开头。由于 OP 使用的是 SQL Server
猜你喜欢
  • 2017-02-13
  • 2016-04-24
  • 2018-04-22
  • 1970-01-01
  • 2014-10-30
  • 2010-09-28
  • 2011-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多