在这个 SQL 查询中 Tmp(email) 有啥用?
Posted
技术标签:
【中文标题】在这个 SQL 查询中 Tmp(email) 有啥用?【英文标题】:What is the use of Tmp(email) in this SQL query?在这个 SQL 查询中 Tmp(email) 有什么用? 【发布时间】:2019-04-15 02:12:52 【问题描述】:我正在使用 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);
【问题讨论】:
从您的问题中不清楚您到底想做什么。请提供table1
定义 (DDL)、示例数据以及您的 MERGE
语句应该对哪些数据进行更改。
【参考方案1】:
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 'foo@bar.com') as TMP (EMAIL) using (EMAIL);
【讨论】:
以上是关于在这个 SQL 查询中 Tmp(email) 有啥用?的主要内容,如果未能解决你的问题,请参考以下文章