我得到了18分贝左右。所有这些db都具有相同的结构。我想查询所有这些db一次以获得我的结果。
示例:
SHOPA ShopB ShopC
这些db获得了所有表格文章(以及相同的行)。 如何使用WHERE获取一个结果中的所有文章?
我想:
select *
from shopa.dbo.article
shopb.dbo.article
shopc.dbo.article
where color = 'red'
有人有想法吗?
答案 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上编写查询