SQL语句"IN"包含太多表达式

卢声远*_* Lu 2 java sql jdbc

我使用JDBC通过'IN'语句检索Oracle数据库.但是有太多的表达,大约> 1000.看起来像:

SELECT * FROM MyTable WHERE name IN (?, ?, ?......); --More than 1000 question signal
Run Code Online (Sandbox Code Playgroud)

它会导致" 语法错误或访问规则违规 ",这意味着" 列表中最大表达式数为1000 ".

我是否必须多次进行检索操作(例如,使用100'?'并检索10次)并合并列表?更好的解决方案?谢谢!

编辑:我没有机会修改数据库,这不是我的艺术作品.

dre*_*kka 6

我会重新思考为什么你需要传递那么多要寻找的东西的逻辑.也许有一种不同的方式来指定你要找的东西.

或者,另一个选项是创建临时表,将要查找的键加载到表中,然后在数据表和键表之间进行连接.那你就不需要in()子句了.

  • 如果有超过1000个条目,它们几乎肯定来自数据库.只需将创建它们的任何查询粘贴到IN子句中即可. (3认同)