我正在使用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);

最佳答案

AS TMP(EMAIL是一个相关子句,它是table reference的一部分

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

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

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


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

select *
from table1 join
     (select '[email protected]') as TMP (EMAIL) using (EMAIL);

关于mysql - 在此SQL查询中Tmp(email)的用途是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55681814/

10-12 03:04