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