sql/spark-sql: 查询中的 if 语句语法

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 语句在这里是什么意思以及它在这里是如何工作的?非常感谢!

alg*_*imo 6

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_t2id_t2