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= ...
随机推荐
- Python学习-算术运算符,赋值运算符和复合运算符
算术运算符 常见的算术运算符有 : + 加法运算符 print(1 + 2); // 3 print('1' + '2'); //12 不仅可以进行2个数字的相加,还可以连接2个字符串 - ...
- oldboy python 3.5 week 1
#!/usr/bin/env python # -*- coding:utf-8 -*- ------------------------------------------- name = inpu ...
- hdu 5122(2014ACM/ICPC亚洲区北京站) K题 K.Bro Sorting
传送门 对于错想成lis的解法,提供一组反例 1 3 4 2 5同时对于这次案例也可以观察出解法:对于每一个数,如果存在比它小的数在它后面,它势必需要移动,因为只能小的数无法向右移动,而且每一次移动都 ...
- vue.js通讯----父亲拿儿子的数据
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Prime Land(poj 1365)
题意:这题题意难懂,看了题解才知道的.比如第二组sample,就是5^1*2^1=10, 求10-1即9的质因数分解,从大到小输出,即3^2.本来很简单的嘿,直接最快速幂+暴力最裸的就行了. #inc ...
- 【BZOJ2434】阿狸的打字机(fail树,DFS序)
题意: 1<=N<=10^5 1<=M<=10^5 输入总长<=10^5 思路: From http://blog.csdn.net/lych_cys/article ...
- 20180906关于mysql启动
转自 https://blog.csdn.net/sqlserverdiscovery/article/details/52808541
- ORACLE分区表删除分区数据
--全删除 ALTER TABLE tableName DROP PARTITION partionName UPDATE GLOBAL INDEXES; --清数据 ALTER TABLE tabl ...
- 链表中倒数第N个元素——剑指Offer
https://www.nowcoder.net/practice/529d3ae5a407492994ad2a246518148a?tpId=13&tqId=11167&tPage= ...
- 【Nginx】进程模型
转自:网易博客 服务器的并发模型设计是网络编程中很关键的一个部分,服务器的并发量取决于两个因素,一个是提供服务的进程数量,另外一个是每个进程可同时处理的并发连接数量.相应的,服务器的并发模型也由两个部 ...