【发布时间】:2020-06-22 04:10:34
【问题描述】:
我正在尝试使用 NOT IN 子句运行查询,例如:
SELECT * FROM table WHERE column NOT IN (?,?,...) (>1000 items) 我收到 ORA-01795: maximum number of expressions in a list is 1000 错误。
在我的脚本中,我正在做类似的事情:
my $lparam = join ', ' => ('?') x @ids;
$lquery = "SELECT * FROM table WHERE column NOT IN ($lparam)";
$lcsr = $zdb->prepare($lquery);
$lcsr->execute( @ids );
我想将 NOT IN 子句拆分为 where (A not in (a,b,c) AND A not in (d,e,f)) ... 之类的内容,我们怎样才能做到这一点?
【问题讨论】:
-
您可能必须将数据放在临时表中并对其进行检查。
-
临时表可能会导致性能问题。我们可以在 perl 中有任何替代方法来拆分数组并在多个 NOT IN 子句中使用吗?
-
关于“临时表可能会导致性能问题”,人们更倾向于相信绕过用于保护性能的限制更有可能做到这一点。不管怎样,我该睡觉了。