在WHERE IN中可以在数组中放置多少项?

时间:2012-07-10 11:18:02

标签: sql oracle where-clause

我有一个查询

SELECT [whatever] FROM [somewhere] WHERE [someValue] IN [value1, valeue2, ..., valueN]

Oracle 10g数据库中N的最大大小(来自上述值N)是多少?可能高达10k还是50k?

4 个答案:

答案 0 :(得分:3)

对于IN子句,Oracle具有1000个元素的固定限制,如手册中所述:

http://docs.oracle.com/cd/E11882_01/server.112/e26088/conditions013.htm#i1050801

  

您最多可以在expression_list中指定1000个表达式。

答案 1 :(得分:3)

如果您正在使用IN condition的'表达式列表'版本,虽然您错过了值列表周围的括号,但您的问题似乎就是这种情况,那么您受限于expression list本身:

  

以逗号分隔的表达式列表不能超过1000个   表达式。逗号分隔的表达式列表可以包含   任意数量的集合,但每组可以包含不超过1000   表达式。

如果您正在使用子查询版本,那么除了可能的系统资源之外没有任何限制。

答案 2 :(得分:2)

thread表示限制为1000.但是,我建议您不要去那里,而是将您的值放在表格中,然后将查询转换为子选择。更整洁,更灵活,性能更好。

答案 3 :(得分:-1)

这取决于您对该特定列的行数。在某些情况下,表中可能有数百万条记录。