首页 > 解决方案 > SQL Server - 围绕 UNION 和 USE 函数的语法

问题描述

在我希望查询的同一台服务器上有一系列数据库。我正在使用相同的代码来查询数据库,并希望结果出现在一个列表中。

我使用“USE”来指定要查询的数据库,然后创建一些临时表来对我的数据进行分组,然后使用最终的 SELECT 语句将数据库中的所有数据汇集在一起​​。

然后我使用 UNION,然后是下一个数据库的第二个 USE 命令,依此类推。

SQL Server 在单词“UNION”上显示语法错误,但没有提供有关问题根源的任何帮助。

有没有可能我错过了一个角色。目前我没有在任何地方使用 ( 或 )。

标签: sqlsql-servertsql

解决方案


USE语句只是重定向您的会话以连接到同一实例上的不同数据库,在这件事上您实际上不需要从数据库切换到数据库(但有一些罕见的例外)。

使用 3 部分表示法加入您的结果集。您可以在连接到任何数据库时执行此操作。

SELECT
    SomeColumn = T.SomeColumn
FROM
    FirstDatabase.Schema.TableName AS T
UNION ALL
SELECT
    SomeColumn = T.SomeColumn
FROM
    SecondDatabase.Schema.YetAnotherTable AS T

该引擎将自动检查您在每个数据库上的登录用户,并验证您对基础表或视图的权限。

UNION将结果集添加在一起,您不能发出除between之外的其他操作(如USE)。SELECTUNION


推荐阅读