MyBatis架构中存有使用方法。

exists使用方法应用实例汇总exists函数的用法-exists和in的区别性能比较-第1张图片目前使用方法exists:假如括弧内子查询句子回到結果不以空,表明where标准创立,便会实行主SQL句子假如括弧内子查询句子回到結果为空,表明where标准不创立,就不容易实行主SQL句子not exists: 与exists反过来假如括弧内子查询句子結果为空,表明表明where标准创立,便会实行主SQL句子假如括弧内子查询句子結果不以空,表明表明where标准不创立,就不容易实行主SQL句子exists与in的差别:in只有回到一个字段名值exists注重是不是回到結果集,不规定了解回到哪些,exists容许回到好几个字段名exists的能力一般好于in:应用exists,Oracle最先会查验主查看,随后运作子查询直至寻找第一个配对项应用in子查询时,最先会实行子查询,并将获取的結果目录放到一个加了数据库索引的临时表中exists的高效率好于distinct:当递交一对多表记录查询时,就可以防止在select中应用distinct由于RDBMS关键控制模块将在子查询的标准一旦达到后,马上回到結果,因此内置去重复.下列2组SQL句子等额的:SELECT distinct dept_no, dept_name from dept D, EMP E WHERE D.dept_no = E.dept_no; SELECT dept_no, dept_name from dept D WHERE EXISTS (SELECT 1 from emp E WHERE E.dept_no = D.dept_no); exists合适表面的結果集小的状况in合适内表面都非常大的状况exists函数的用法-exists和in的区别性能比较-第2张图片使用方法实例exists:SELECT ID,NAME FROM A WHERE EXISTS(SELECT * FROM B WHERE A.ID = B.AID)SQL句子溶解:SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1) --->SELECT * FROM B WHERE B.AID=1有值回到TRUE因此有数据信息 SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=2) --->SELECT * FROM B WHERE B.AID=2有值回到TRUE因此有数据信息 SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=3) --->SELECT * FROM B WHERE B.AID=3无值回到TRUE因此沒有数据信息 上边SQL句子等额的于:SELECT id, name from A WHERE id in (select aid from B)

引言

SQL中in, not in, exists, not exists的差别:in:明确依据的值是不是与子查询或是目录中的值配对in关键词挑选与目录中随意一个值配对的行in关键词以后的新项目务必用分号分隔,而且括在引号中not in:根据not in关键词引进的子查询也回到一列零值或大量值exists:特定一个子查询,检验行的存有等同于2个结合的相交exists后边能够是全句的搜索句子 ,in后边必须是列项查看句子not exists:等同于2个结合的差集exists和not exists回到的結果种类是Boolean:假如子查询包括行:exists回到TRUEnot exists回到FALSE

评论(0条)

刀客源码 游客评论