子查询

 >= 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. TNS-12541: TNS:no listener TNS-12560: TNS:protocol adapter error

    新建的数据库,在配置完listener的时候报这个错. 参考文章:https://community.oracle.com/message/4098938 http://blog.csdn.net/l ...

  2. Statusbar出现透明及界面下方出现空白

    步骤1.在ViewController中 loadView   #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 if ( IOS7_OR_LATER ) ...

  3. VS调试错误:“没有可用于当前位置的源代码”的解决方案

    今天,有朋友在问为什么我在调试的时候会出现"没有可用于当前位置的源代码"的错误呢? MSDN上的说法:没有可用于当前位置的源代码,项目不包含您试图查看代码的源代码.原因通常是双击了 ...

  4. 网站开启Gzip压缩-apache

    找到并打开apache/conf目录中的httpd.conf文件 httpd.conf中打开deflate_Module和headers_Module模块,具体做法为将 如下两句前面的#去掉: Loa ...

  5. this、call和apply

    this call apply this 和其他语言不同,JavaScript的this总是指向一个对象,而具体指向哪个对象是在运行时基于函数的执行环境动态绑定的,而非函数被声明时的环境. this的 ...

  6. hbase 0.96 java 示例

    import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; impo ...

  7. 分别取商和余数:divmod(a, b)

    使用函数:divmod(a, b)可以实现分别取商和余数的操作: >>> divmod(123,3) (41, 0) >>> divmod(200,6) (33, ...

  8. [JAVA]各种杂七杂八的东西......

    BigInteger / BigDecimal / string 一些常用的函数: 加 add减 substract乘 multiply除 divid取余 mod / remainder (remin ...

  9. SPRING IN ACTION 第4版笔记-第三章ADVANCING WIRING-006-给bean运行时注入值(Environment,Property文件)

    一. 直观的给bean注入值如下: @Bean public CompactDisc sgtPeppers() { return new BlankDisc( "Sgt. Pepper's ...

  10. Java:JXL解析Excel文件

    项目中,有需求要使用JXL解析Excel文件. 解析Excel文件 我们先要将文件转化为数据流inputStream. 当inputStream很大的时候 会造成Java虚拟器内存不够 抛出内存溢出 ...