Oracle中exists替代in语句
大家都知道exists的速度要比in的速度快,也知道exists函数返回一个布尔值,也就是说exists函数里最后要是 a.id =b.id类似这种方式结束。
例如:
SELECT *
FROM TBL_REBATE_DAY_COUNT
WHERE ID IN (1, 2, 3, 4, 5);
(假设TBL_ALGO_RECORD 表中有ID=1,2,3,4,5)常规的方式转换成exists为
SELECT *
FROM TBL_REBATE_DAY_COUNT a
WHERE exists(SELECT *
FROM TBL_ALGO_RECORD b WHERE a.ID = b.ID);
上面是一张表的情况下可以这样写(为了演示这里我用了*,实际生产中不推荐大家写*号),但有的时候,这个exists中需要的是一个固定的值,而不是一张表又要怎么写呢?
这里,我们可以例用UNION关键字
SQL UNION 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
最后转换成exists的语句为:
SELECT *
FROM TBL_REBATE_DAY_COUNT t
WHERE exists(SELECT *
FROM (SELECT 1 AS id FROM dual
UNION SELECT 2 FROM dual
UNION SELECT 3 FROM dual
UNION SELECT 4 FROM dual
UNION SELECT 5 FROM dual
) tmp
WHERE tmp.id = t.id)
Oracle中exists替代in语句的更多相关文章
- 对于Oracle中分页排序查询语句执行效率的比较分析
转自:http://bbs.csdn.net/topics/370033478 对于Oracle中分页排序查询语句执行效率的比较分析 作者:lzgame 在工作中我们经常遇到需要在Oracle中进行分 ...
- Oracle中,利用sql语句中的函数实现保留两位小数和四舍五入保留两位小数
Oracle中,利用sql语句中的函数实现保留两位小数和四舍五入保留两位小数: select trunc(1.23856789,2) from dual round(m,n) 可以四舍五入 trunc ...
- Oracle中exists与in的区别
有两个简单例子,以说明 "exists"和"in"的效率问题 1) select * from T1 where exists(select 1 from T2 ...
- oracle中exists和in的比较
exists 是Oracle sql中的一个函数.表示是否存在符合某种条件的记录.如 select * from A,B where A.id=B.id and exists (SELECT * FR ...
- oracle中exists 和 in 的区别
1)用IN select * from A where id in(select id from B); 以上查询使用了in语句,in()只执行一次,它查出B表中的所有id字段并缓存起来.注意,是缓存 ...
- Oracle中的一些查询语句及其执行顺序
查询条件: 1)LIKE:模糊查询,需要借助两个通配符,%:表示0到多个字符:_:标识单个字符. 2)IN(list):用来取出符合列表范围中的数据. 3)NOT IN(list): 取出不符合此列表 ...
- Oracle中的一连接语句
首先构建场景 相应表中数据如下: SELECT * FROM EMPLOYEE: SELECT * FROM DEPTINFO; 连接方式: 1. , SELECT E.EMPNAME, D.DEPN ...
- oracle 用EXISTS替代IN
在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下, 使用EXISTS(或NOT EXISTS)通常将提高查询的效率. 低效: SELECT * FROM EMP ( ...
- 常用oracle中系统表查询语句
sqlplus / as sysdbaSQL>select status from v$instance;1.查看最大连接数show parameter processes;2.查询oracle ...
随机推荐
- [CF543A]/[CF544C]Writing Code
[CF543A]/[CF544C]Writing Code 题目大意: 有\(n\)种物品,每种物品分别要\(c_i\)的代价,每个物品有\(1\)的体积,每个物品可以选多个,代价不能超过\(b\), ...
- Spring 的 AOP 进行事务管理的一些问题
AspectJ AOP事务属性的配置(隔离级别.传播行为等): <tx:advice id="myAdvice" transaction-manager="mtTx ...
- ajax中的async属性值之同步和异步及同步和异步区别
jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里 ...
- React Native小白入门学习路径——一
前言 过去这段时间一直忙着实验室考核任务,拼尽全力完成了自己的任务之后.正准备开始高强度的实验室的学习的时候,实验室组织了新老生交流会,这也应该是头一次这么近距离的面对大四前辈交流想法.感觉自己受益颇 ...
- 文件处理(如果文件存在则追加,不存在则生成多级文件夹以及txt目录)
public static void writeFile(String path,String fileName,String content) throws IOException { File f ...
- Java中的public、private、protected,函数修饰符
1.public:public表明该数据成员.成员函数是对所有用户开放的,项目中其他脚本都可以直接进行调用 2.private:private表示私有,私有的意思就是除了脚本之外,项目中其他类都不可以 ...
- numpy快速入门
numpy快速入门 numpy是python的科学计算的核心库,很多更高层次的库都基于numpy.博主不太喜欢重量级的MATLAB,于是用numpy进行科学计算成为了不二选择. 本文主要参考Scipy ...
- POJ1068 --(模拟)
这题是在看一个书的时候的一个例题,当时并不明白啥意思,于是便找了下原题,以前没在POJ上刷过,这是开了个头,以后努力刷这个网站 题目大概意思是:http://poj.org/problem?id=10 ...
- mvc中使用Pagination,对其进行再封装
对其进行再次封装: (function($) { $["fn"]["easyPaging"] = function(o) { if (!o.pageSelect ...
- 解决错误:Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package.
原因是代码直接放在默认包里边,比如src\main\java目录下 应该在src\main\java下建立子目录,比如src\main\java\com\test 这样的话,代码就在com.test这 ...