SQL 从很长的值列表中选择

SQL Selecting from very long list of values

我需要select基于一个大列表:

SELECT ... FROM tb WHERE tb.cl IN (?, ?, ?, ..................many)

我不能这样做,因为驱动程序实现 (Jaybird) 将查询限制为最多 1500 个参数,而且我不能 select/load 全部并在应用程序内部进行过滤,因为有内存不足。

我该怎么办?

额外信息

我正在使用 Spring 使用 Hibernate 和 JPA 存储库启动,所以如果可以在 JPQL 中完成或使用其他一些与环境相关的技术,它会更合适。

我实际上会使用 ...WHERE tb.cl NOT IN...,如果有任何不同的话。
它有点像 EDI,我正在连接两个不同的数据库,所以使用嵌套 select 不是一个选项。

一种替代方法是使用 临时 table 并根据需要在 table 中插入任意数量的数据。之后你可以使用:

Select .. from tb where tb.cl in (select cl from myTempTable)

然后对临时 table 或删除进行截断。据我所知,如果您使用参数,所有领先的关系数据库都会在 IN 子句中设置限制。 另一方面,使用临时 table 就可以了。