从两方面来说
站在用户的角度思考问题,与客户深入沟通,找到桦川网站设计与桦川网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都网站建设、企业官网、英文网站、手机端网站、网站推广、国际域名空间、虚拟主机、企业邮箱。业务覆盖桦川地区。
(1)改用exists,这样的话查一遍就行了(虽然理论上是这样,不过我看执行计划没看出来),in的话是两遍
(2)尽量减少in内的数据,继续缩小范围,如果实在没办法减小范围,那就只能是多次查询(慎用,虽然说多次查询每次的量小了,但是多次查询也容易出问题),或者也可以用关联查询试试看(也就是不作为条件,而是作为一张表查询,查询后再关联,这样的话走hash可能会快,这个不一定,要看具体的执行计划)
in 子查询中你取了2列值啊,只能去1列值的
你是要这样的效果吗?
select rz,tm from st_rsvr_r where rz in(select max(rz) from st_rsvr_r where stcd='62202410'and rz0
union
select min(rz) from st_rsvr_r where stcd='62202410'and rz0
)
从Java端传入Oracle的参数的数量比数据库使用的参数的数量不一致。
一般就是一些条件在某些条件下没有拼到SQL语句中,但是参数传入部分没有进行相应的判断,导致传入的参数数量过多。
一种是查询的时候,select a.* from a where a.id in(select * from b);--子查询里面是多个列了。
第二种是插入的时候 insert into a select * from b; --b表的字段比a表里的多。
insert into xg_zhcp_zcfsb
(xh, xn, xq, xmdm, fs, lrr,lrsj) select
这是你写的, 但是你后面select出来的字段大于7个, 自然就报错了
在出错前把SQL语句 用System.out.println(sql);输出下,粘到Oracle 里试试看,一般Oracle会给你提示