【发布时间】:2020-07-11 21:50:47
【问题描述】:
我正在尝试从位于不同数据库中但具有相同架构的表中获取数据。
IE 数据库名称类似于:DB1、DB2、DB3。
它们都包含表“MyTable”,并且有一个外键匹配数据库中的“MainTable”主键,我们将称之为 MainDB,我只会做一个联合并担心稍后的性能,但是问题是,在这种特殊情况下,有时 DB3(或其中任何一个)不存在,这会导致我的查询失败并且需要每天进行编辑。
MainTable 的列在组合时构成了我需要在每列上加入的数据库的名称,为简单起见,我将其称为名为 ForeignDBName 的列。 我想要类似的东西
SELECT
MainPK
, FName
, LName
, BirthDate
, ForeignDBName
FROM
MainDB.dbo.MainTable
LEFT JOIN
(
SELECT
BirthDate
,MainTableFK
FROM
DB1.dbo.MyTable
UNION ALL
SELECT
BirthDate
,MainTableFK
FROM
DB2.dbo.MyTable
UNION ALL
SELECT
BirthDate
,MainTableFK
FROM
DB3.dbo.MyTable
) B ON B.MainTableFK = MainPK
【问题讨论】:
-
轻松为您提供帮助:minimal reproducible example
标签: sql sql-server tsql sql-server-2014