我想插入一个联合,有人建议这样做:

SELECT x INTO ##temp
FROM (SELECT x FROM y UNION ALL SELECT x FROM z) UN


它可以工作,但是UN是什么?不幸的是,谷歌搜索“ t-sql un”不是很有帮助:p

注意:我发现您可以执行SELECT x INTO ##temp FROM y UNION ALL SELECT x FROM b,但是我仍然对UN感到好奇。

编辑:好的,所以这是一个别名,但是为什么需要这项工作?如果删除它,它将不会执行。

最佳答案

这不是关键字。这是一个别名。此处可以使用任何字符串代替“ UN”。

更完整的形式是:

SELECT x INTO ##temp
FROM (SELECT x FROM y UNION ALL SELECT x FROM z) AS UN




@Tomalak是正确的。在这种情况下,别名是必需的。没有别名,错误是:


Msg 102,第15级,状态1,第2行
')'附近的语法不正确。


我简化了查询,并使用了AdventureWorks数据库:

SELECT * INTO ##temp
FROM (SELECT * FROM Person.Address)


这收到上面的错误。相反:

SELECT * INTO ##temp
FROM Person.Address


效果很好。替代方法是

;WITH UN AS
(
    SELECT * FROM Person.Address
)
SELECT * INTO ##temp
FROM UN

关于sql-server - 这个联合国是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3670719/

10-11 18:53