SQL Server - 围绕UNION和USE函数的语法

时间:2018-05-17 08:43:38

标签: sql sql-server tsql

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

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

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

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

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

2 个答案:

答案 0 :(得分:3)

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将结果集添加到一起,您不能在USE之间发出SELECT以外的其他操作(如UNION)。

答案 1 :(得分:1)

您应该在表名前使用数据库名称:

SELECT valueFromBase1
 FROM `database1`.`table1`
  WHERE ...
UNION
SELECT valueFromBase2
 FROM `database2`.`table2`
  WHERE ...