数据湖探索 DLI-JOINS:SEMI JOIN、ANTI JOIN

时间:2024-12-13 17:52:41

SEMI JOIN、ANTI JOIN

当一张表在另一张表找到匹配的记录之后,半连接(semi-join)返回第一张表中的记录。与条件连接相反,即使在右节点中找到几条匹配的记录,左节点的表也只会返回一条记录。另外,右节点的表一条记录也不会返回。半连接通常使用IN或EXISTS作为连接条件。

而anti-join则与semi-join相反,即当在第二张表没有发现匹配记录时,才会返回第一张表里的记录;当使用not exists/not in的时候会用到。

其他支持的条件包括如下内容:

  • where子句中的多个条件
  • 别名关系
  • 下标表达式
  • 解引用表达式
  • 强制转换表达式
  • 特定函数调用

目前,只在如下情况下支持多个semi/anti join表达式:第一个表中的列在其直接后续的join表达式中被查询,且不与其它join表达式有关系。

示例如下:

support.huaweicloud.com/sqlref-hetuengine-dli/dli_16_0128.html