我有一条SQL语句,我想在其中ep_codes使用IN子句来获取1200的数据。当我ep_codes在IN子句中包含1000个以上时,Oracle表示不允许这样做。为了克服这个问题,我尝试如下更改SQL代码:
ep_codes
IN
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?
OR
Pascal Martin的解决方案运行完美。感谢所有提供宝贵建议的人。
IN()实际上,不确定在a中使用这么多的值是否那么好-尤其是对于性能而言。
IN()
当您说“ 结果很奇怪 ”时,可能是因为括号有问题吗?如果您尝试此操作,而不是您建议的操作,该怎么办:
SELECT ... FROM ... WHERE ... AND ( ep_codes IN (...1000 ep_codes...) OR ep_codes IN (...200 ep_codes...) )
这会使结果不那么 奇怪 吗?