遇到 主表 和 许多 关联表的 条件查询 问题 .
主表 之中只有 一条记录 ,但是关联的 附加表 可能存在多条 记录.
开始的时候 使用左连接 ,但是查询到 2 条数据.
select * from tpublicpolicy tp
left join Muster tm on tp.policyId = tm.policyId
XXXXXXXXXXXXXXXXX
然后,改成使用IN的子查询。
select * from tpublicpolicy tp
where tp.policyId in(
select policyId from Muster XXXXXXXXXX
)
XXXXXXXXXXXXXXX
成功查询。
最后还发现, IN 查询 比左连接快 。
但是,发现最后 填充 附加信息的时候 很耗时,因为是循环每个 保单去 添加 附加信息的。
但是Hibernate 之中之前没有 建立好关联, 不能自动 带出附加信息 。
为了 减少查询次数 ,想到 一次将所有的 数据全部查询出来。
也就是采用如下的方式 :
//查询保障信息集合
String hql = "from TPolicyEnsureTemporary where publicPolicyId in (:pidlist)";
Query query = session.createQuery(hql);
query.setParameterList("pidlist", pIdList);
List<PolicyEnsureTemporary> ensureList = this.TPolicyEnsureTrVO(query.list());
/**
* 根据PolicyID从list获得保单保障临时表对象
*
* @param policyId
* @return rstList
* @throws Exception
*/
public List<PolicyEnsureTemporary> queryPolicyEnsureList (List<PolicyEnsureTemporary> ensureList, int policyId)
throws Exception {
List<PolicyEnsureTemporary> rstList = new ArrayList();
if(null == ensureList || ensureList.size() <= 0){
return rstList;
}
for(PolicyEnsureTemporary pe : ensureList){
if(pe.getPublicPolicyId().equals(policyId)){
rstList.add(pe);
}
}
return rstList;
}
到内存之中 去分拆 到每个 保单对象 。
这样 ,有几个 附加对象 就查询 几次 可以了 ,不用循环去查询耗费时间 。
分享到:
相关推荐
### SQL查询中的行列转换 在数据库管理中,经常会遇到数据结构需要调整的情况,尤其是当原始数据的排列方式与实际需求不一致时。本篇文章将详细解释如何通过一条SQL查询语句实现行列转换,并且会针对两种不同的SQL ...
"Merge Join" Step就是其中之一,它允许用户实现类似SQL中的各种类型关联查询,包括INNER JOIN、LEFT JOIN、RIGHT JOIN以及FULL JOIN。 INNER JOIN是SQL中的一种基本联接类型,它返回两个表中存在匹配的记录。在...
至于压缩包子文件的文件名称列表中的“J2F”,这可能是由于上传过程中的命名错误或者是某种特定的文件格式,但在这个上下文中,它并不直接关联到jpg图片转换成十六进制字符文件的过程。通常,这个步骤不会涉及其他子...
总的来说,这个压缩包提供的程序设计示例,不仅展示了dat文件与IN2文件格式间的转换技术,还涵盖了C++编程、VS与Qt的联合应用,以及平差计算的基本原理。对于学习GIS、测绘软件开发和数据处理的初学者,这是一个很好...
当我们需要用A表的某个字段做为条件去查询B表的数据时,如果逻辑简单的可以用in子句和left关联查询。当我逻辑很复杂,不适合写sql关联查时,可以使用该工具把A的查询结果格式化成逗号和分号分隔的语句,直接使用。 ...
假设我们的文本文档包含条码信息,我们可以使用条码扫描器或手机应用捕获条码,然后将其与转换后的Excel表格关联。条码可以作为唯一标识符,帮助我们定位和更新特定记录。例如,使用Python的`pyzbar`库可以解析条码...
6. **验证和测试**:转换完成后,进行全面的测试,确保所有数据已正确导入,查询和应用程序能够正常工作。可能需要调整SQL查询,因为MySQL可能支持不同的语法或函数。 7. **性能优化**:MySQL提供了一系列的性能...
为了提高查询性能,应考虑子查询的优化策略,如使用EXISTS代替IN,或者将大子查询转换为临时表。例如,使用EXISTS找到销售过至少一件商品的客户: ```sql SELECT customer_name FROM customers WHERE EXISTS ...
TUE反映的是A/D转换器运行状况中下列各类非理想因素的联合效应:偏移误差(VOS)、增益误差和积分非线性(INL)误差。 四、影响A/D转换器总准确度的因素 A/D转换器的总准确度可能受到以下因素的影响: * 偏移误差...
- 联合子查询:将多个子查询的结果合并成一个结果集。 4. 子查询与连接(JOIN): - 子查询通常可以被JOIN操作替换,两者在某些场景下可互换,但子查询提供了一种更灵活的处理方式,尤其是在处理复杂的逻辑时。 ...
1. **IN/NOT IN操作符**:`from Entity e where e.id in (select id from AnotherEntity)`,这样的查询会找出存在于另一个实体的结果。 2. **比较操作符**:`from Entity e where e.value > (select avg(value) ...
Shapefile由一系列相互关联的文件组成,包括.shp(几何数据)、.dbf(属性数据)和.shx(索引)。GDAL提供了接口来操作这些文件,允许我们轻松地读取和写入Shapefile。 在C#中,使用GDAL进行操作通常需要引用OGR...
- 通过创建临时表可以将`IN`子句转换为更高效的表连接操作。 - 利用索引加速连接操作。 - 减少了需要比较的值的数量,从而提高了查询速度。 ##### 4.2 分批处理 1. **原理**: - 将`IN`子句中的值分成小批量...
理解如何编写复杂的查询,如联合查询、嵌套查询和分组查询,是SQL的基础。 2. **比较逻辑运算符查询**:在SQL中,比较逻辑运算符如=、、<、>、、>=以及BETWEEN、IN和NOT IN等用于筛选满足特定条件的数据。理解这些...
本代码包聚焦于如何利用GeoIP服务获取IP地址的归属地,并将获取到的国家编码转换成中文名称。 首先,`GeoIP.dat`是GeoIP数据库文件,通常包含了全球IP地址到国家、地区等信息的映射。这个二进制文件由MaxMind公司...
* inmemory:表在内存中存放,可以提高查询速度,但需要注意内存使用率。 * bloomfilter:根据应用需求,判断是否需要精确到 rowkey 或 column, bloomfilter 可以对 region 下的 hfile 进行查询优化。 2. rowkey ...
DICOM(Digital Imaging and Communications in Medicine)是一种广泛用于医疗影像领域的数据交换标准,它包含了图像、病人信息、诊断注释等丰富的元数据。而BMP(Bitmap)则是一种常见的位图文件格式,常用于存储非...
上面的SQL JOIN查询可以转换为以下LINQ查询: ```csharp using (var db = new YourDbContext()) { var result = (from u in db.Users join o in db.Orders on u.UserID equals o.UserID select new { User = u....
在开发过程中,数据库查询是必不可少的操作,特别是在处理复杂的业务逻辑时,多表联合查询显得尤为重要。ThinkPHP作为一款流行的PHP框架,提供了多种方式进行多表联合查询。以下将详细讲解ThinkPHP中`table()`方法和...