满屏网站设计做多大,搜索引擎推广培训,松滋做网站,湖南网站建设价格费用在SQL Server或者MySQL中#xff0c;当你在IN子句中需要处理的结果集可能超过2100个元素时#xff0c;由于SQL Server对IN子句中的参数数量存在大约2100个左右的限制#xff0c;直接使用IN会导致错误。为了解决这个问题#xff0c;可以采取以下策略#xff1a;
1、将参数…在SQL Server或者MySQL中当你在IN子句中需要处理的结果集可能超过2100个元素时由于SQL Server对IN子句中的参数数量存在大约2100个左右的限制直接使用IN会导致错误。为了解决这个问题可以采取以下策略
1、将参数拆分分批次查询出结果然后合并
2、建立临时表批量插入IN参数 join 或者 exists 查询后删除掉 我一般都是将参数表一直留着插入时候带入时间戳参数查询时候按时间戳查 后面跑任务定时批量清除 参考代码
QueryWrapperEVVipset wrapper new QueryWrapper();ListString includeListterm.getIncludeList();if(!isListNotEmpty(includeList)) return new ArrayList();int includeSizeincludeList.size();if(includeSize2000){String guid UUID.randomUUID().toString();ListTempForQuery forQueryListnew ArrayList();for(String dm:includeList){forQueryList.add(new TempForQuery(guid,vipset,dm));}tempForQueryMapper.insertBatch(forQueryList);wrapper.exists(select 1 from TempForQuery WITH(NOLOCK) where guidguid and typevipset and codeV_VIPSET.dm);}else{wrapper.in(dm,includeList);}ListEVVipset list vipsetMapper.getCustList(wrapper);return list;