db2 SQL语句过长报错,无法通过SQL或者java代码解决?
hatom 2016-02-22 03:25:01 刚过完年,就遇到了一个比较棘手的问题:
系统在做查询时,抛出了一个SQL语句过长的异常,大概错误信息如下:
Caused by: com.ibm.db2.jcc.am.SqlException: The statement is too long or too complex.. SQLCODE=-101, SQLSTATE=54001, DRIVER=3.64.114
分析:在代码中调用了一条查询的db2 SQL语句,该SQL语句包含一个in子查询。in子语句里面的数据非常多。导致整个SQL语句过长,因而报错!而且in子语句里面数据来源的表和主查询表不是在同一个库里面(数据库服务器也不一样),不知道该如何解决了??有想过更改数据库服务器SQL语句过长的配置的方法,不太可行,也有想过使用临时表的方法,把数据同步到同一个服务器的同一个数据库里面。。。想请教大家,看看还有没有其他什么好的方法没有???
涉及SQL大概如下:
SELECT * FROM A WHERE id IN ('1' ,'2','3','4','5'... ... ... ...)