我收到错误
ORA-01795列表中的最大表达式数为1000
以下查询
select emp_id, emp_name, emp_code
from emp e
where emp_id in (001,002,005,006....18000);
我需要在IN
子句中放入18000条记录。我怎样才能做到这一点?如何修改给定的查询?
答案 0 :(得分:0)
您可以(并且几乎肯定应该)将“记录”(值)放在表格中。然后你可以在评论中建议@jpw进行连接;无论如何,IN条件被查询引擎视为连接。
或者,如果要使用IN语法,仍需要表中的值,并将条件重写为
... where emp_id in ( select id from this_table )
其中“this_table”是此新表的名称,“id”是列名。 1000表达式限制适用于您在IN列表中硬编码的表达式,它不适用于子查询返回的结果数。