当前位置: 首页 > 面试题库 >

Oracle SQL:如何在IN子句中使用1000多个项目

皮嘉德
2023-03-14
问题内容

这个问题已经在这里有了答案

SQL IN子句1000项目限制 (4个答案)

6年前关闭。

我有一条SQL语句,我想在其中ep_codes使用IN子句来获取1200的数据。当我ep_codes在IN子句中包含1000个以上时,Oracle表示不允许这样做。为了克服这个问题,我尝试如下更改SQL代码:

SELECT period, ...
FROM   my_view
WHERE  period = '200912'
       ...
       AND ep_codes IN (...1000 ep_codes...)
       OR  ep_codes IN (...200 ep_codes...)

该代码已成功执行,但结果很奇怪(在所有期间都获取了计算结果,而不仅仅是200912,这不是我想要的)。是否应该使用ORbetweenIN子句来做到这一点,还是应该执行两个单独的代码,一个使用1000,另一个使用200
ep_codes?

Pascal Martin的解决方案运行完美。感谢所有提供宝贵建议的人。


问题答案:

IN()实际上,不确定在a中使用这么多的值是否那么好-尤其是对于性能而言。

当您说“ 结果很奇怪 ”时,可能是因为括号有问题吗?如果您尝试此操作,而不是您建议的操作,该怎么办:

SELECT ...
FROM ...
WHERE ...
      AND (
          ep_codes IN (...1000 ep_codes...)
          OR  ep_codes IN (...200 ep_codes...)
      )

这会使结果不那么 奇怪 吗?



 类似资料:
  • 问题内容: 可以在SQL IN子句中放置1000多个项目吗?我们一直在遇到无法处理Oracle数据库的问题。 如果是的话,我们如何在SQL IN子句中放置1000多个项目? 如果没有,我还能做什么? 问题答案: 您应该将IN子句转换为INNER JOIN子句。 您可以像这样转换查询 在另一个查询中 您还将获得很多性能

  • 问题内容: 我正在使用iBATIS创建选择语句。现在,我想用iBATIS实现以下SQL语句: 使用以下方法,语句准备不正确,并且没有结果返回: iBATIS似乎重新构建了该列表,并尝试将其解释为字符串。 如何正确使用IN子句? 问题答案: 这是一篇博客文章,回答您的问题: iBatis:使用SQL IN关键字支持数组或列表参数 在Java中,您应该传入java.util.List。例如

  • 问题内容: 这是我第一次使用JDBCTemplates,并且遇到了需要使用如下查询的情况: 我怎么做?我已经尝试过传递列表/数组值,但是没有成功,我遇到了异常。我当前的代码如下所示: Spring文档指出,除了生成所需数量的“?”之外,没有其他方法可以这样做。占位符以匹配参数List的大小。有解决方法吗? 问题答案: 我认为您不能将其作为单个“?”来完成。与Spring JDBC模板无关,它是核心

  • 我以前有一个类似于Rails的查询: 它生成sql查询,如下所示: 现在我想将其更改为使用而不是。我创建了这个: 现在,当我使用空数组时,我得到以下错误:

  • 问题内容: 当我们执行此操作时,将不会有任何结果 我的问题是: 以上查询在逻辑上等效于 就像上面的声明一样,不会有任何结果 请说清楚? 问题答案: 正确(但请注意,这是一个运算符,而不是一个子句,它通常在SQL中这样工作,不仅适用于Oracle)。 等效于: 实际应该写成: 和 与以下内容相同: 结果为: 并进一步作为: 因此,它正确不返回任何行。 请注意,如果您有,它将评估为(在练习中保留),并

  • 问题内容: 为什么以下SQL不能给我任何东西 虽然 吸引我的行 问题答案: 您可以根据需要执行一些动态SQL,但我认为这并不是真正的竞争。