oracle exists和 not exists 的用法

比如 a,b 关联列为 a.id = b.id,现在要取 a 中的数据,其中id在b中也存在:

select * from a where exists(select 1 from b where b.id = a.id)

或者:
现在要取 a 中的数据,其中id在b中 不存在:

select * from a where not exists(select 1 from b where a.id = b.id)

原文地址:https://www.cnblogs.com/houchen/p/11966389.html

时间: 2024-10-17 16:41:12

oracle exists和 not exists 的用法的相关文章

oracle中的exists 和not exists 用法详解

oracle中的exists 和not exists 用法详解 有两个简单例子,以说明 “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; T1数据量小而T2数据量非常大时,T1<<T2 时,1) 的查询效率高. 2) select * from T1 where T1.a in (select T2.a from T2) ; T1数据量非常大而T2数据量小时,T1>

oracle中的exists 和not exists 用法 in与exists语句的效率问题

博文来源(oracle中的exists 和not exists 用法):http://chenshuai365-163-com.iteye.com/blog/1003247 博文来源(  in与exists语句的效率问题):http://www.cnblogs.com/iceword/archive/2011/02/15/1955337.html (一) exists (sql 返回结果集为真) not exists (sql 不返回结果集为真) 如下: 表A ID NAME 1    A1 2

Oracle下的IF EXISTS()

妈蛋..作为一个使用了SQL SERVER有4 5年的程序猿,开始用Oracle真他妈不习惯.写法真他妈不一样.比如像写个像IF EXISTS(SELECT * FROM sys.tables WHERE name = 'xxxx') BEGIN DROP TABLE XXXX END这样的语句,发现在ORACLE下完全两码事.妹的..于是百度啊.最后发现 1)Oracle下没有IF EXISTS(),Oracle下要实现IF EXISTS()要这么写 declare num number; b

Oracle中没有 if exists(...)

对于Oracle中没有 if exists(...) 的语法,目前有许多种解决方法,这里先分析常用的三种,推荐使用最后一种 第一种是最常用的,判断count(*)的值是否为零,如下declare  v_cnt number;begin  select count(*) into v_cnt from T_VIP where col=1;  if v_cnt = 0 then    dbms_output.put_line('无记录');  end if;end;首先这种写法让人感觉很奇怪,明明只

Oracle中没有 if exists(...)的解决方法

http://blog.csdn.net/hollboy/article/details/7550171对于Oracle中没有 if exists(...) 的语法,目前有许多种解决方法,这里先分析常用的三种,推荐使用最后一种 第一种是最常用的,判断count(*)的值是否为零,如下declare  v_cnt number;begin  select count(*) into v_cnt from T_VIP where col=1;  if v_cnt = 0 then    dbms_o

exists 和 not exists 的用法

1 我们总是习惯了用in 和 not in 但是这样有时会会很影响性能,下面来看看用exists 和 not exists 的使用方法 首先新建两张表 a 和 b select a.* from a where exists (select * from b where a.value = b.value) select a.* from a where exists (select * from b where a.value = b.value) 我们看到 只要exists 里面 返回有数据

MySQL exists 和 not exists 的用法

有一个查询如下: 1 SELECT c.CustomerId, c.CompanyName   2 FROM Customers c   3 WHERE EXISTS(   4     SELECT OrderID FROM Orders o   5     WHERE o.CustomerID = c.CustomerID)   这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个字段肯定不在Orde

oracle 集合变量以及自定义异常的用法

oracle 集合变量以及自定义异常的用法, 在过程 record_practice 有record变量和自定义异常的用法实例.具体在3284行. 1 CREATE OR REPLACE Package Pkg_Weiyl Is 2 Pkg_Name Constant Varchar2(20) := 'pkg_weiyl'; 3 Too_Young Constant Number := -20001; 4 Exc_Too_Young Exception; 5 Pragma Exception_I

sql中 in 、not in 、exists、not exists 用法和差别

exists (sql 返回结果集为真) not exists (sql 不返回结果集为真) 如下: 表A ID NAME 1    A1 2    A2 3  A3 表B ID AID NAME 1    1 B1 2    2 B2 3    2 B3 表A和表B是1对多的关系 A.ID => B.AID SELECT ID,NAME FROM A WHERE EXIST (SELECT * FROM B WHERE A.ID=B.AID) 执行结果为 1 A1 2 A2 原因可以按照如下分

(转)sql中 in 、not in 、exists、not exists 用法和差别

exists (sql 返回结果集为真)  not exists (sql 不返回结果集为真)  如下:  表A  ID NAME  1    A1  2    A2  3  A3 表B  ID AID NAME  1    1 B1  2    2 B2  3    2 B3 表A和表B是1对多的关系 A.ID => B.AID SELECT ID,NAME FROM A WHERE EXIST (SELECT * FROM B WHERE A.ID=B.AID)  执行结果为  1 A1