ORA-01795列表中的最大表达式数为1000

时间:2016-08-06 17:20:30

标签: sql oracle

我收到错误

  

ORA-01795列表中的最大表达式数为1000

以下查询

select emp_id, emp_name, emp_code
from emp e
where emp_id in (001,002,005,006....18000);

我需要在IN子句中放入18000条记录。我怎样才能做到这一点?如何修改给定的查询?

1 个答案:

答案 0 :(得分:0)

您可以(并且几乎肯定应该)将“记录”(值)放在表格中。然后你可以在评论中建议@jpw进行连接;无论如何,IN条件被查询引擎视为连接。

或者,如果要使用IN语法,仍需要表中的值,并将条件重写为

... where emp_id in ( select id from this_table )

其中“this_table”是此新表的名称,“id”是列名。 1000表达式限制适用于您在IN列表中硬编码的表达式,它不适用于子查询返回的结果数。