1

我有几个 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。

4

3 回答 3

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 作为所有者。

于 2012-10-08T10:31:21.043 回答
1

[database name].[schema name].[table name]您可以使用within来限定表名,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
于 2012-10-08T10:31:22.867 回答
0

您可以在表名前加上要使用的数据库,然后可以使用 aUNION 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
于 2012-10-08T10:32:18.453 回答