Skip to content

OUTER APPLY

语法说明

OUTER APPLY 是用来将主表的每一行与一个函数或子查询的结果动态关联的。(右侧内容可以基于主表的行动态生成)。与 CROSS APPLY 不同的是,即使右侧没有数据,也不会丢弃主表的记录,只是右侧列用 NULL 填充。(类似 LEFT JOIN 的效果,但右侧是动态生成的数据)。

语法结构

> SELECT <columns>
FROM <table_name>
outer 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 outer apply generate_series(t1.a,t1.b,1)g;
+------+------+--------+
| a    | b    | result |
+------+------+--------+
|    1 |    3 |      1 |
|    1 |    3 |      2 |
|    1 |    3 |      3 |
|    1 |   -1 |   NULL |
+------+------+--------+
4 rows in set (0.01 sec)