Skip to content

CROSS APPLY

语法说明

CROSS APPLY 是 MatrixOne 中的一个特殊连接操作符,主要用于将一个表的每一行与另一个返回结果集的表函数(如表值函数)进行连接。与 JOIN 不同,CROSS APPLY 允许右侧的子查询或表值函数依赖于左侧表的每一行,从而为每一行返回不同的结果。

语法结构

> SELECT <columns>
FROM <table_name>
CROSS APPLY <table_function> <alias>;

示例

mysql> create table t1(a int, b int);
Query OK, 0 rows affected (0.03 sec)

mysql> insert into t1 values(1,3),(1,-1);
Query OK, 2 rows affected (0.00 sec)

mysql> select * from t1 cross apply generate_series(t1.a,t1.b,1)g;
+------+------+--------+
| a    | b    | result |
+------+------+--------+
|    1 |    3 |      1 |
|    1 |    3 |      2 |
|    1 |    3 |      3 |
+------+------+--------+
3 rows in set (0.02 sec)