EXISTS怎么替代in

1、EXISTS的使用方法

EXISTS 是判断是否存在,和in类似,但效率要比in高

SELECT * FROM  EMP (基础表)  WHERE  EMPNO > 0  AND  EXISTS (SELECT ‘X‘  FROM DEPT  WHERE  DEPT.DEPTNO = EMP.DEPTNO  AND  LOC = ‘MELB‘)

SELECT  * FROM  EMP (基础表)  WHERE  EMPNO > 0  AND  DEPTNO IN(SELECT DEPTNO  FROM  DEPT  WHERE  LOC = ‘MELB‘)

这两句效果一样
时间: 2024-10-14 09:41:17

EXISTS怎么替代in的相关文章

在SQL Server中为什么不建议使用Not In子查询

原文:在SQL Server中为什么不建议使用Not In子查询     在SQL Server中,子查询可以分为相关子查询和无关子查询,对于无关子查询来说,Not In子句比较常见,但Not In潜在会带来下面两种问题: 结果不准确 查询性能低下       下面我们来看一下为什么尽量不使用Not In子句.   结果不准确问题     在SQL Server中,Null值并不是一个值,而是表示特定含义,其所表示的含义是"Unknow",可以理解为未定义或者未知,因此任何与Null值

复杂sql优化步骤与技巧

数据管理型系统,由于用户的要求或者系统设计要求,会出现大量表进行join,还要进行大量统计性数据查询展示,甚至数据权限限制等等操作. 最后会导致sql异常复杂,随着数据量增加,或者只是应用到生产环境(正式环境)就会出现系统反应慢,体验极差的现象,这个时候不得不对这些 复杂的sql进行优化.没有经验的程序员会感觉无从下手,这么复杂的sql语句看一眼就头疼,怎么办呢? 根据个人的工作经验提供一下优化步骤: 首先要对sql语句进行格式化,使sql条理清晰,甚至分步骤添加注释,弄清楚每个步骤是为了得到什

T-SQL基础(四)之集合运算

三个运算符 T-SQL支持三个集合运算符:UNION.INTERSECT.EXCEPT. 集合运算符查询的一般形式如下: Query1 <set_operator> Query2 -- 这里,ORDER BY子句对最终结果集进行排序 [ORDER BY...] ORDER BY 在逻辑查询处理方面,集合运算符应用于两个查询结果集,且外部的ORDER BY子句(如果有的话)应用于集合运算所得到的结果集. 每个独立的查询可以使用除了ORDER BY之外的所有逻辑查询处理阶段,原因如下: ORDER

Oracle,用left join 替代 exists ,not exists,in , not in,提高效率

Not IN问题 Exists,not Exists,in,not in 例如: DELETE FROM YSHA WHERE NOT EXISTS(SELECT 1 FROM YSHB B WHERE YSHA.code=b.code ) 等同于 DELETE A FROM YSHA A LEFT JOIN YSHB B ON A.code=b.code WHERE b.code is NULL

ORACLE变量定义及使用(另,T-SQL EXISTS的PLSQL替代写法)

1. 简单变量 declare v_cnt NUMBER(10,0) := 0; BEGIN SELECT COUNT(1) INTO v_cnt FROM concept.Decoction WHERE DecoctionId = -1; IF v_cnt = 0 THEN insert into concept.Decoction( DecoctionId, Code, Name, MnemonicCode, SpellCode, WBCode, ClinicItemId, IsSpecia

刚整理的SQL常见替代点

1.能用DISTINCT的就不用GROUP BY SELECT OrderID FROM Details WHERE UnitPrice > 10 GROUP BY OrderID 可改为:  SELECT DISTINCT OrderID FROM Details WHERE UnitPrice > 10 2.能用UNION ALL就不要用UNION UNION ALL不执行SELECT DISTINCT函数,这样就会减少很多不必要的资源 3.尽量不要用SELECT INTO语句. SELE

msyql中子查询IN,EXISTS,ANY,ALL,SOME,UNION介绍

1.ANY关键字 假设any内部的查询语句返回的结果个数是三个,如:result1,result2,result3,那么, select ...from ... where a > any(...); -> select ...from ... where a > result1 or a > result2 or a > result3; 2.ALL关键字 ALL关键字与any关键字类似,只不过上面的or改成and.即: select ...from ... where a

数据库——SQL中EXISTS怎么用2(转)

数据库sql语句的exists总结 sql exists in 学习 先来比较下语法: --deals=交易表,areas=地域表,例如香港:我们的目的:查看有交易的地域 select * from areas where id in (select city_id from deals); select * from areas where id in   (select city_id from deals where deals.city_id = areas.id); select *

Python笔记:替代case语句的字典和匿名函数(lambda)

在linux的shell中我们习惯使用case语句来做分支处理,然而Python中却省略了这个函数,经过多方查找,发现其实case语句在C语言中是通过查对应的hash表,来进行跳转的.在Python中我们可以通过三种方法来实现这种功能.1.字典:2.lambda:3.switch类. 1.字典 dictCase={'case1':func1,'case2':func2....'caseN':funcN} #注意字典中对应的是函数名,不要圆括号. 在调用的时候使用字典的get函数来实现defaul