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