SQL使用IN参量不能超过1000的表现形式以及解决办法

如果出现这个错误说明你传的参量是超过了一千个值;列如,你拼接了1001个id;
如何解决那,我这里提供两种方法:
1.每1000条加一个or in
列:
原:select p.* from t_premium p where p.premium_id in ('0','1'........,'1000',......'2000');
现:select p.* from t_premium p where p.premium_id in ('0','1'......‘999’)or in (’1000',......'1999');
如何实现那?
看下边
public static void main(String[] agrs) throws Exception {
StringBuffer thirdPartyPayId=new StringBuffer();
for (int j = 0; j < 20; j++) {
if((j%10) == 0 && j > 1){
thirdPartyPayId.deleteCharAt(thirdPartyPayId.length() -1);
thirdPartyPayId.append(") OR " + "info.third_party_pay_id" + " IN ('" + j + "',");
}else{
thirdPartyPayId.append("'").append(j).append("',");
}
}
thirdPartyPayId.deleteCharAt(thirdPartyPayId.length() -1);
System.out.println(thirdPartyPayId.toString());
}
我这里用j代替了循环的"info.third_party_pay_id" ,兄弟们用的时候可以遍历自己的list,获取参量;
thirdPartyPayId.deleteCharAt(thirdPartyPayId.length() -1):去掉多余的标点符号,不能省;
SELECT DISTINCT
nvl(info.apply_policy_no,'无') applyPolicyNo
FROM T_THIRD_PARTY_PAY_INFO info,t_department_define o
WHERE info.department_code = o.internal_department_code(+)
AND (info.third_party_pay_id IN ($thirdPartyPayId$ ))
AND info.FLAG = '2'
注:1.这种方式效率很慢;数据量小的话也就无所谓;数据量大的话不建议使用;
2.()这两个括号必须要,因为(+)这个不能和in, not in 一起使用,但是因为
2.传递的参量转换成一个sql查询
SELECT DISTINCT
nvl(info.apply_policy_no,'无') applyPolicyNo
FROM T_THIRD_PARTY_PAY_INFO info,t_department_define o
WHERE info.department_code = o.internal_department_code(+)
AND info.third_party_pay_id IN (
SELECT
sd.third_party_pay_id
FROM T_SOURCE_DOCUMENT sd,t_voucher v
WHERE sd.VOUCHER_ID = v.VOUCHER_ID and v.voucher_code=#voucherCode#
AND sd.third_party_pay_id IS NOT NULL
and v.CANCEL_STATUS != '2'
)
AND info.FLAG = '2'
就是说你获取参量的那个查询sql放进来;
后记:应该还有join以及exists两种思路。但用起来感觉所锁定目标不太清晰。故没做考量;
SQL使用IN参量不能超过1000的表现形式以及解决办法的更多相关文章
- oracle select in超过1000条报错解决方法
本博客介绍oracle select in超过1000条数据的解决方法,java框架是采用mybatis的,这可以说是一种比较常见的错误:select * from A where id in(... ...
- ASP.NET伪静态-无法读取配置文件,因为它超过了最大文件大小的解决办法
一直都在使用微软URLRewriter,具体的使用方法我就不多说了,网上文章很多. 但最近遇到一个问题,就是当web.config文件里面设置伪静态规则过多,大于2M的时候,就报错:无法读取配置文件, ...
- SQL Server数据库实例名与服务器名不一致的解决办法
SQL Server数据库实例名与服务器名不一致的解决办法 --EXEC sp_addlinkedserver -- @server = 'PSHGQ' --GO --select * from ...
- SQL Server中TOP子句可能导致的问题以及解决办法
简介 在SQL Server中,针对复杂查询使用TOP子句可能会出现对性能的影响,这种影响可能是好的影响,也可能是坏的影响,针对不同的情况有不同的可能性. 关系数据库中SQL语句只 ...
- 关于sql server2008数据库的连接的几个问题及解决办法
写在开头 不得不说给一台新的服务器配置和部署的确是个不小的工程,在这里先感谢我们的DEV焉域政同学在这方面做出的一些贡献:把安装过程极为困难的sql server2008成功安装到服务器上,并且为我们 ...
- discuz搬家后报错SQL:SELECT value FROM [Table]vars WHERE name=’noteexists1′的解决办法
基本上每个站长都会经历网站搬家,网站搬家中有时候就会遇到这次提到的这个错误数据库报错::SQL:SELECT value FROM [Table]vars WHERE name=\\\'noteexi ...
- MS SQL SERVER 2008 R2 实例服务启动出现10048错误解决办法
由于个人癖好,把MSSQLSERVER服务禁止了开机启动,每次需要的时候就输入CMD命令开启.今天在开启的时候,系统提示“发生服务特定错误:10048”. 于是打开SQL Server配置管理器,发现 ...
- SQL Server没有足够的内存继续执行程序 (mscorlib)的解决办法
在Microsoft SQL Server Management Studio 中执行较大的sql脚本时,会报没有足够的内存继续执行程序(mscorlib)的错误.如下图所示 解决方法: 使用sqlc ...
- ORA-01843: 无效的月份,执行sql语句更改为美国语言后仍然失败的解决办法
ORA-01843: 无效的月份失败的 sql 为:XXXXXXXXXXXXXXXX 执行sql语句更改为美国语言后仍然失败, ALTER SESSION SET NLS_DATE_LANGUAGE= ...
随机推荐
- oracle 内连接 左外连接 右外连接的用法,(+)符号用法
1. 内连接很简单 select A.*, B.* from A,B where A.id = B.id select A.*, B.* from A inner join B on A.id = B ...
- 2018NOIP普及T4---对称二叉树
题目 对称二叉树 题目描述 思路 检查是否符合对称条件 条件很简单——结构对称&&点权对称 要做到点权对称其实也就顺便结构对称了 于是条件可以简化为点权对称 可以考虑并行搜索 bo ...
- Volume 6. Mathematical Concepts and Methods
138 - Street Numbers #include <stdio.h> //(2n+1)^2 - 8m^2 = 1,佩尔函数,或者打表 int main() { ; , xi = ...
- 洛谷 2633 BZOJ 2588 Spoj 10628. Count on a tree
[题解] 蜜汁强制在线... 每个点开一个从它到根的可持久化权值线段树.查询的时候利用差分的思想在树上左右横跳就好了. #include<cstdio> #include<algor ...
- Spring使用DriverManagerDataSource和C3P0分别配置MySql6.0.6数据源
首先,看一下项目路径 先说spring配置文件吧,这个比较重要 <?xml version="1.0" encoding="UTF-8"?> < ...
- vs2017 添加引用时 未能完成操作。不支持此接口
打开vs2017开发者命令提示符 切换至安装下的指定目录 执行下面的命令就可以了 需要注意的是一定要用vs2017的开发人员命令提示符 别用cmd gacutil -i Microsoft.V ...
- 使用lombok提高编码效率-----不用写get set
使用lombok提高编码效率-----不用写get set https://blog.csdn.net/v2sking/article/details/73431364
- nyoj 95 众数问题(set)
众数问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重 ...
- HDU5266 LCA 树链剖分LCA 线段树
HDU5266 LCA Description 给一棵 n 个点的树,Q 个询问 [L,R] : 求点 L , 点 L+1 , 点 L+2 -- 点 R 的 LCA. Input 多组数据. The ...
- HDU——1134 Game of Connections
Game of Connections Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...