在我希望查询的同一台服务器上有一系列数据库。我使用相同的代码来查询数据库,并希望结果显示在单个列表中。
我正在使用' USE'在使用最终的SELECT语句将数据库中的所有数据汇集在一起之前,指定要查询的数据库,然后创建一些临时表来对我的数据进行分组。
然后我使用UNION,接着是第二个USE命令用于下一个数据库,依此类推。
SQL Server在单词' UNION'上显示语法错误但是没有就问题的根源提供任何帮助。
我可能错过了一个角色。目前我没有在任何地方使用(或)。
答案 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 ...