Eda*_*ame 4 sql join apache-spark-sql
我正在研究一些现有的 spark-sql 代码,它们尝试将两个表连接到如下表:
items_t1_t2 as (
select *,
if(id_t1 is not Null, True, False) as in_t1,
if(id_t2 is not Null, True, False) as in_t2
from item_t2 full join item_t1
on id_t2 = id_t1)
Run Code Online (Sandbox Code Playgroud)
我想知道为什么 if 括号中有三个元素?if 语句在这里是什么意思以及它在这里是如何工作的?非常感谢!
Spark SQL(以及其他一些 SQL 系统)中的“IF”语句包含三个子句:
IF (condition_to_evaluate, result_if_true, result_if_false)
Run Code Online (Sandbox Code Playgroud)
例如,在这种情况下,表达式:
IF(id_t1 IS NOT NULL, True, False) AS in_t1
Run Code Online (Sandbox Code Playgroud)
在逻辑上等同于这个:
id_t1 IS NOT NULL AS in_t1
Run Code Online (Sandbox Code Playgroud)
或者,换另一种说法:in_t1只是一个标志说:“如果id_t1不为空”,而这同样适用于in_t2和id_t2。