在此SQL查询中Tmp(email)的用途是什么?

时间:2019-04-15 02:12:53

标签: mysql sql database db2

我正在使用Db2,今天我运行了此查询。

MERGE INTO table1 AS A 
    USING (VALUES('${user.email}')) AS TMP(EMAIL) 
        ON A.EMAIL=TMP.EMAIL

因此,在这部分关键字AS中,它是否将TMP创建为新表?

我尝试在MySQL中进行类比,但它告诉我错了。

select *
from table1 join
     table2 using (id) as TMP(EMAIL); 

1 个答案:

答案 0 :(得分:0)

AS TMP(EMAIL correlation子句,它是table reference

的一部分

它为VALUES语句生成的表分配一个“别名”(相关名称),并且为其唯一的列分配一个名称。 MySQL v8还supports this syntax用于子选择的表。

第二个示例中的错误是您将关联子句从其表名中分离出来。它应该看起来像这样(请注意,您不能在此处分配列别名,因为table2不是子选择):

select *
from table1 join
     table2 as TMP using (id); 

在此示例中,您可以还分配一个列别名:

select *
from table1 join
     (select 'foo@bar.com') as TMP (EMAIL) using (EMAIL);