子查询

 >= all (select salary from orderEvent.win:length_batch(5))";

注意:

运行以上三个例句后的结果,刚开始让很费解(对调试代码不做说明),因为win:length_batch(5))对子查询与外部查询中的产生的效果不一样导致。
以以上应用场景为例:
外部查询事件缓存在之前的Context节中有详细说明;
子查询缓存更新可理解为每次积累到5个事件流才会更新子查询事件缓存,超过5个将重新积累计数,;
满足输出需要两个条件:

  • 子查询中缓存的事件个数需要5个.
  • 子查询中缓存的事件中存在salary值符合条件的;

Join

格式:

事件A  关键字(inner join、full outer join、left outer join、right outer join) 事件B  on  事件连接条件

 

Inner join

默认的join方式,必须等到所有的join事件都到才能输出.

例句:

String epsql = "select * from orderEvent.std:lastevent(),orderBean.std:lastevent() ";

注:std:lastevent()必须加,不然报Joins require that at least one view is specified for each stream的错误.

Full outer join

1、两个事件不同时到达:不管事件输出的条件是否满足,当有事件到达时就输出.
2、两个事件同时达到:当条件满足,输出满足条件的数据;当条件不满足,输出,两个事件各输出一次.

例句:

String epsql = "select * from orderEvent.std:lastevent() as oe full outer join orderBean.std:lastevent() as ob on oe.salary=ob.value";

 

left outer join

关键字左边的事件到达时,不管条件是否满足都会输出,关键字右边的事件只有在满足join条件时才可以输出.

例句:

String epsql = "select * from orderEvent.std:lastevent() as oe left outer join orderBean.std:lastevent() as ob on oe.salary=ob.value";

1、right outer join与left outer join功能相反,在事件连接过程中,前后两个事件先后到达时,前到达的会被单独执行,但执行后事件缓存与内存中,与后到的事件会再次一起执行;
2、std:lastevent()对事件的修饰有缓存的作用;
3、以上四种事件连接可以多种混合使用;

Unidirectional Join

关键字unidirectional作用于修饰需要连接的事件,使被修饰的事件在连接执行过程中不缓存(无状态).

例句:

String epsql = "select * from orderEvent as oe unidirectional full outer join orderBean.std:lastevent() as ob on oe.salary=ob.value";

1、在一个执行语句中unidirectional只能修饰一个事件;
2、使用了unidirectional修饰的事件流就不能再用data window或者view修饰了(它们之间是互斥);
3、用unidirectional修饰的事件流,不能通过esper的查询api查出来,因为该事件流是无状态的,不会暂存在引擎中;

Esper系列(六)子查询、Exists、In/not in、Any/Some、Join的更多相关文章

  1. 【SqlServer系列】子查询

    1   概述 1.1  已发布[SqlServer系列]文章 [SqlServer系列]SQLSERVER安装教程 [SqlServer系列]数据库三大范式 [SqlServer系列]表单查询 [Sq ...

  2. MySQL 子查询 EXISTS 和 NOT EXISTS(转)

    MySQL EXISTS 和 NOT EXISTS 子查询 MySQL EXISTS 和 NOT EXISTS 子查询语法如下: SELECT ... FROM table WHERE EXISTS ...

  3. Sql Server系列:子查询

    1 子查询概念 子查询是嵌套在另一个查询中的普通T-SQL查询.在有一个SELECT语句通过使用小括号创建子查询,作为另一个查询的部分数据或条件的基础. 子查询通常用于满足以下某个需求: ◊ 将一个查 ...

  4. MySQL 子查询 EXISTS 和 NOT EXISTS

    MySQL EXISTS 和 NOT EXISTS 子查询 MySQL EXISTS 和 NOT EXISTS 子查询语法如下: SELECT ... FROM table WHERE EXISTS ...

  5. mysql子查询 exists,not exists,all和any

    (1)实现让结果集A - 结果集B:--利用not exists,合并则可用union . exists,not exists:用于判断且获取结果集A是否存在地结果集B中! ==========结果集 ...

  6. 数据库Mysql的学习(六)-子查询和多表操作

    )*0.05 WHERE card_id ='20121xxxxxx'; //子查询就是一个嵌套先计算子查询 SELECT * FROM borrow WHERE book_id =(SELECT b ...

  7. SQL 子查询 EXISTS 和 NOT EXISTS

    MySQL EXISTS 和 NOT EXISTS 子查询语法如下: SELECT … FROM table WHERE EXISTS (subquery) 该语法可以理解为:将主查询的数据,放到子查 ...

  8. SQL基础-子查询&EXISTS&UNION

    一.子查询 1.使用子查询作为计算字段 子查询:嵌套在其他查询中的查询 现在有两个表,student表和teacher表 创建teacher表,并插入数据: CREATE TABLE `teacher ...

  9. Oracle 数据库基础学习 (六) 子查询

    子查询在一个select中出现多个嵌套查询语句 1.在where子句中使用子查询(一般返回"单行单列" "单行多列" "多行单列"(可以提供 ...

随机推荐

  1. grep线上环境精典案例后续

    请执行命令取出 linux 中 eth0 的 IP 地址(请用 cut,有能力者也可分别用 awk,sed 命令答). 自己的方法: [root@nginx_back ~]# ifconfig eth ...

  2. python函数的返回值 讲解

    我们一起来聊聊python函数返回值的特殊情况,之前我也碰到过类似方面的问题,到后来查阅了一些资料后,发现原来是这样. 首先,写函数的时候,一定要写函数的文档,这样方便我们识别函数是做什么的.我记得很 ...

  3. 安装使用adobe_photoshop_cs6

    1.先断开网络,安装官方原版PS程序. 2.在安装程序界面选择“试用”安装. 3.等安装完成后,退出程序. 4.复制破解补丁到安装路径覆盖,如:D:\Program Files\Adobe\Adobe ...

  4. CODEVS 3000公路修建问题

    题目描述 Description OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多.然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕.所以,OIER Associat ...

  5. 在使用Fake framework的时候,为什么有一些函数没有生产mock呢?

    在使用Visual studio 2012 的Fake framework 做单元测试的时候,你会发现有一些函数没有生产Stub 或者 Shim的版本,这可能是由于Fake的一些限制导致的,但如何知道 ...

  6. HDU 1560 DNA sequence (IDA* 迭代加深 搜索)

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1560 BFS题解:http://www.cnblogs.com/crazyapple/p/321810 ...

  7. python 读取SQLServer数据插入到MongoDB数据库中

    # -*- coding: utf-8 -*-import pyodbcimport osimport csvimport pymongofrom pymongo import ASCENDING, ...

  8. jQuery UI dialog 的使用

    今天用到了客户端的对话框,把 jQuery UI 中的对话框学习了一下. 准备 jQuery 环境 首先,我们创建一个按钮,点击这个按钮的时候,将会弹出一个对话框. 1 <input type= ...

  9. [水题]ZOJ3038 Triangle War II

    题意: 给了这样一张图 有两种状态:pushed(*)和unpushed(.)    为方便起见分别成为 开 和 关 改变一个点的开关状态 会同时改变与它相邻的点的开关状态  比如改变5,则2.3.4 ...

  10. JAVA三大框架的各自作用

    http://christhb.blog.163.com/blog/static/98982492011727114936239/ 一.Spring Spring是一个解决了许多在J2EE开发中常见的 ...