这个问题已经在这里有了答案 :
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,这不是我想要的)。是否应该使用OR
betweenIN
子句来做到这一点,还是应该执行两个单独的代码,一个使用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,但我认为这并不是真正的竞争。