功能:
左表按基准列与右表关联,过滤出匹配的记录。类似于 SQL 的 IN / NOT IN 或 LEFT JOIN + IS NULL。
语法:
匹配 [<基准列名>] [关联表 <关联表名>] [<关联列名>] [方式] [条件 <条件式>]
参数:基准列名
左表(当前表)中用于匹配的一个或多个字段,包括#。
可选,省略参数名,缺省表示必须依靠参数条件 <条件式>建立完全非等值关联;有本参数时,用本参数建立等值关联,可以继续用参数条件 <条件式>建立非等值关联。
参数:关联表 <关联表名>
用于匹配到左表上的右表。
必填,不可省略参数名。
参数:关联列名
右表用于匹配的一个或多个字段,包括#。
可选,省略参数名。省略表示用主键或基准列同名的列。
参数:方式
关联后的过滤方式,枚举类型,枚举值:不匹配删除、匹配删除。前者表示留下能匹配上的记录,后者表示留下不能匹配的记录。
可选,省略参数名,缺省是"不匹配删除"。
参数:条件 <条件式>
关联时的过滤条件。左表字段用@后缀,右表字段无后缀。
可选,不可省略参数名。
示例:
部门表数据如下:
|
DEPT |
MANAGER |
|
Administration |
1 |
|
HR |
5 |
|
Production |
7 |
|
R&D |
2 |
|
Sales |
3 |
员工表数据如下:
|
EID |
NAME |
DEPT |
SALARY |
|
1 |
Rebecca |
R&D |
7000 |
|
2 |
Ashley |
Finance |
11000 |
|
3 |
Rachel |
Sales |
9000 |
|
4 |
Emily |
HR |
7000 |
|
5 |
Ashley |
R&D |
16000 |
|
6 |
Matthew |
Sales |
11000 |
|
7 |
Alexis |
Sales |
9000 |
|
8 |
Megan |
Marketing |
11000 |
|
9 |
Victoria |
HR |
3000 |
|
10 |
Ryan |
R&D |
13000 |
以下示例脚本中,锚点均为员工表:
匹配 DEPT 关联表 部门表 不匹配删除 DEPT //保留员工表中能匹配上部门表DEPT列的记录,结果如下:
|
EID |
NAME |
DEPT |
SALARY |
|
1 |
Rebecca |
R&D |
7000 |
|
3 |
Rachel |
Sales |
9000 |
|
4 |
Emily |
HR |
7000 |
|
5 |
Ashley |
R&D |
16000 |
|
6 |
Matthew |
Sales |
11000 |
|
7 |
Alexis |
Sales |
9000 |
|
9 |
Victoria |
HR |
3000 |
|
10 |
Ryan |
R&D |
13000 |
匹配 DEPT; 关联表 部门表; 匹配删除 //保留员工表中匹配不上的记录,关联列名省略用基准列中同名的列,结果如下:
|
EID |
NAME |
DEPT |
SALARY |
|
2 |
Ashley |
Finance |
11000 |
|
8 |
Megan |
Marketing |
11000 |
匹配 DEPT 关联表 部门表; 条件 (SALARY@>=5000 且 (["Sales","HR"] 包含 DEPT)) //保留员工表中薪资≥5000且部门在指定列表内的记录,结果如下:
|
EID |
NAME |
DEPT |
SALARY |
|
3 |
Rachel |
Sales |
9000 |
|
4 |
Emily |
HR |
7000 |
|
6 |
Matthew |
Sales |
11000 |
|
7 |
Alexis |
Sales |
9000 |