我想插入一个联合,有人建议这样做:
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/