有没有办法使用Union with Use?

时间:2012-10-08 10:27:03

标签: sql sql-server sql-server-2008 union

我有几个USE语句,我希望UNION在一个结果集中获取所有结果,但我不能这样做,因为UNION只能用于SELECT。是否有工作或以任何方式以另一种方式实现我的目标?

示例:

USE Customer 
select min(len(Password)) as min, 
    max(len(Password)) as max, 
    avg(len(Password)) as avg 
FROM Password
USE website 
select min(len(password)) as min, 
    max(len(password)) as max, 
    avg(len(password)) as avg 
FROM Password

我使用不同的数据库和更多的这些语句。因此,我们希望将它们组合在一起。

我正在使用Microsoft SQL Server 2008。

3 个答案:

答案 0 :(得分:2)

请勿使用USE语句。为对象使用完全限定名称(表,视图等)

SELECT
    min(len(Password)) AS minPassword, 
    max(len(Password)) AS maxPassword, 
    avg(len(Password)) AS avgPasswword 
FROM 
    Customer.dbo.Password
UNION
select 
    min(len(password)), 
    max(len(password)), 
    avg(len(password))
FROM 
    Website.dbo.Password

这假设你的表有dbo作为所有者。

答案 1 :(得分:1)

您可以使用[database name].[schema name].[table name]中的UNION来限定表格名称,如下所示:

select min(len(Password)) as min, 
    max(len(Password)) as max, 
    avg(len(Password)) as avg 
FROM customer.schemaname.Password
UNION ALL 
select min(len(password)) as min, 
    max(len(password)) as max, 
    avg(len(password)) as avg 
FROM website.schemaname.Password

答案 2 :(得分:0)

您可以在表名前加上要使用的数据库,然后您可以使用UNION ALL同时查询它们:

select min(len(Password)) as min, 
    max(len(Password)) as max, 
    avg(len(Password)) as avg 
FROM Customer.yourSchema.Password
UNION ALL
select min(len(password)) as min, 
    max(len(password)) as max, 
    avg(len(password)) as avg 
FROM website.yourSchema.Password

调用时的结构为:

yourDataBase.yourSchemaName.yourTableName