可以在SQL IN子句中放置1000多个项目吗?我们的Oracle数据库无法解决问题.
如果是,我们如何在SQL IN子句中放置超过1000个项目?
如果没有,我还能做什么?
gor*_*rdy 83
还有另一种解决方法,在任何其他答案(或其他已回答的问题)中都没有提到:
任何语句x in (1,2,3)都可以重写为(1,x) in ((1,1), (1,2), (1,3)),并且1000元素限制将不再适用.我已经使用索引测试x并解释计划仍然报告Oracle正在使用访问谓词和范围扫描.
Jon*_*han 56
您应该将IN子句转换为INNER JOIN子句.
您可以像这样转换查询
SELECT  foo   
FROM    bar   
WHERE bar.stuff IN  
       (SELECT  stuff FROM asdf)
在像这样的另一个查询.
SELECT  b.foo 
FROM    ( 
        SELECT  DISTINCT stuff 
        FROM    asdf ) a 
JOIN    bar b 
ON      b.stuff = a.stuff
你也将获得很多表现
小智 7
对于同一变量,我们可以有多个“ IN”语句。
例如:
select val
 from table
where val in (1,2,3,...)
or
val in (7,8,9,....)
| 归档时间: | 
 | 
| 查看次数: | 81284 次 | 
| 最近记录: |