SQL 要实现如下功能
select *
from t_export_file file
where exists (select carrier.ID as id`
from t_export_carrier carrier
where carrier.carrier_out_no is not null
and carrier.carrier_out_no <> ''
and carrier.carrier_deal = 2
and file.ID = carrier.file_id)
and file.delete_flag = 0
order by file.CREATE_DATE desc
表 t_export_file 与表t_export_carrier 为一对多的关系,通过 t_export_file .ID = t_export_carrier .file_id 进行主外键关联。
现在通过HIbernate 的查询实现语句如下:
/*定义主查询对象并命名别名,注意别名不能与另一个对象的属性名一样,否则会报错*/
DetachedCriteria query = DetachedCriteria.forClass(ExportFile.class,"file");
/*定义子查询对象并命名别名*/
DetachedCriteria queryCar = DetachedCriteria.forClass(ExportCarrier.class,"carrier");
/*添加主查询的查询条件,根据需要添加*/
//this.addQuery(query);
/*添加子查询查询条件*/
queryCar.add(Restrictions.isNotNull("carrier.carrierOutNo"));
queryCar.add(Restrictions.ne("carrier.carrierOutNo",""));
queryCar.add(Restrictions.eq("carrierDeal", 2));
/*添加子查询与主查询的主外键关联关系,若有多个条件则适当增加*/
queryCar.add(Property.forName("file.id").eqProperty("carrier.exportFile"));
/*添加子查询的查询内容,至少有一个,否则会报错,此处可以随便添加子查询的任何属性不影响主查询的数据输出。*/
query.add(Subqueries.exists(queryCar.setProjection(Projections.property("carrier.id"))));
/*查询所有符合条件的结果并保存*/
List<ExportFile> exportFileList=exportFileService.getEntitys(query);
相关推荐
mysql多表查询和EXISTS查询性能对比
使用 Hibernate Criteria && DetachedCriteria Queries演示Exists Clause非常简单的项目 安装 git clone https://github.com/RameshRM/hibernate-sample.git 跑步 mvn install 这是一个maven项目,依赖项是 ...
浅析SQL中WHERE EXISTS子查询.pdf
实验目的和要求:了解SQL SEVER 2000的功能及组成,熟练掌握利用SQL SEVER 2000企业管理器和查询分析器创建数据库、表、索引和修改表结构及向数据库输入数据、修改数据和删除数据的操作方法和步骤,掌握定义数据约束...
exists: 括号内子查询sql语句返回结果不为空(即:sql返回的结果为真),子查询的结果不为空这条件成立,执行主sql,否则不执行。 not exists:与exists相反,括号内子查询sql语句返回结果为空(即:sql不返回的结果...
它所在的查询属于相关子查询,即子查询的查询条件依赖于外层父查询的某个属性值,处理过程一般为: 取外层查询的第一个元组,根据它与内层查询相关的属性值处理内层查询,若where子句返回true,则将此元组放入结果表...
分为四类介绍数据库子查询: 一、使用比较运算的子查询 二、使用all、any关键字的子查询 三、使用列表运算符的子查询(in 或者 not in) 四、使用exists运算符的子查询
使用EXISTS(或NOT EXISTS)关键字引入一个子查询时,子查询实际上不产生任何数据;它只返回TRUE或FALS值。 指定一个子查询,检测行的存在。 如果子查询包含行,则返回 TRUE IN效率要差(返回子查询)
通过本章学习,您将可以: ...子查询对空值的处理 在 FROM 子句中使用子查询 在SQL中使用单列子查询 相关子查询 书写相关子查询 使用子查询更新和删除数据 使用 EXISTS 和 NOT EXISTS 操作符 使用 WITH 子句
-带有EXISTS谓词的子查询 -集合查询 -基于派生表的查询 -Select总结 下午上次课学到了嵌套查询-3 今天我们来看一下 带有EXISTS谓词的子查询 3/20 15:30 EXISTS谓词: 存在量词 ∃ 带有EXISTS谓词的子查询不返回任何...
带有EXISTS 谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。 如果返回true,主查询会执行,返回false,主查询就不再执行。 因为带有EXISTS谓词的子查询不返回数据,指定列名没有多大意义...
关于Exists,not Exists.in ,not in效率的说明。关于Exists,not Exists.in ,not in效率的说明。关于Exists,not Exists.in ,not in效率的说明。关于Exists,not Exists.in ,not in效率的说明。关于Exists,not Exists.in...
关系代数中“除法”运算与SQL中带有exists子查询的对比教学.pdf
exists 和 not exists的详细解释
MySQL FROM 子查询是指 FROM 的子句作为子查询语句,主查询再到子查询结果中获取需要的数据。FROM 子查询语法如下: SELECT ... FROM (subquery) AS name ... 子查询会生成一个临时表,由于 FROM 子句中的每个表...
计算机后端-PHP视频教程. php与mysql加强- 07. php加强21-exists型子查询.wmv
4.带有EXISTS谓词的子查询 EXISTS谓词代表存在量词, 带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。 若内层查询结果非空,则外层的WHERE子句返回真值;若内层查询结果为空,...
“exists”和“in”是Oracle中,都是查询某集合的值是否存在在另一个集合,但对不同的数据有不同的用法,主要是在效率问题上存在很大的差别,以下有两个简单例子,以说明 “exists”和“in”的效率问题。
在SQL查询语句中,Exists语句的使用方式
一个简单的struts+spring+hibernate整合实现用户注册的例子,我花了一个下午整出来的,希望对想学习的同志有所帮助。 mysql sql文: DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `password` varchar(32) ...