sql select on multiple db' s

时间:2014-11-27 11:06:31

标签: sql

我得到了18分贝左右。所有这些db都具有相同的结构。我想查询所有这些db一次以获得我的结果。

示例:

SHOPA ShopB ShopC

这些db获得了所有表格文章(以及相同的行)。 如何使用WHERE获取一个结果中的所有文章?

我想:

select *
from shopa.dbo.article
     shopb.dbo.article
     shopc.dbo.article
where color = 'red'

有人有想法吗?

3 个答案:

答案 0 :(得分:2)

您是否考虑过UNION ALL

类似于:

SELECT      'a' AS Shop, *

FROM        shopa.dbo.article

WHERE       color = 'red'

UNION ALL

SELECT      'b' AS Shop, *

FROM        shopb.dbo.article

WHERE       color = 'red'

UNION ALL

SELECT      'c' AS Shop, *

FROM        shopc.dbo.article

WHERE       color = 'red'

或者,使用CTE(如果您支持RDBMS)

;WITH allstores AS (
    SELECT      'a' AS Shop, *

    FROM        shopa.dbo.article

    UNION ALL

    SELECT      'b' AS Shop, *

    FROM        shopb.dbo.article

    UNION ALL

    SELECT      'c' AS Shop, *

    FROM        shopc.dbo.article
)
SELECT      *

FROM        allstores

WHERE       color = 'red'

答案 1 :(得分:1)

你可以使用UNION 如果您只需选择数据库名称,您还可以使用带有OPENQUERY的游标选择动态创建的字符串插入临时表并从中选择

答案 2 :(得分:1)

您可以创建一个从您的选择中填充的视图:

    CREATE VIEW view_name AS
       SELECT * FROM shopa.dbo.article
       UNION
       SELECT * FROM shopb.dbo.article
       UNION
       SELECT * FROM shopc.dbo.article

然后您可以尝试通过View

运行查询
Select * from view_name
where color = 'red'

然后,如果您想要使用其他条件编写另一个查询,则不要使用union或其他代码编写另一个大查询。 您可以在VIEW上编写查询