我正在使用IN子句编写更新查询,我在其中传递List
update table set postcode={#postcode} where id in
<foreach collection="addresses" index="index" item="item" open="("
separator="," close=")">#{item}</foreach>
当我在地址中记录的记录少于1000条时运行正常。如果有超过1000条记录我得到以下错误:
ORA-01795:列表中的最大表达式数为1000。 如何处理?我遇到了一些他们在hibernate中处理过的线程。如何使用超过1000条记录的myibatis来处理它。
答案 0 :(得分:0)
将所有这些值存储到单独的表中,然后在子查询中将其用作
update table set
postcode = some_value
where id in (select values from a_separate_table)
答案 1 :(得分:0)
ORA-01795:列表中的最大表达式数为1000
在IN
子句中严格的表达总数小于1000
之前,无法处理此问题。
或者,您也可以将查询分成多个和您的列表,并执行UNION
以实现相同的目标。