SQL Select 来自 N 个表的唯一外键

SQL Select unique foreignkey from N tables

我遇到了以下问题,想知道是否可以通过 Google BigQuery 中的查询来解决它。

收到此查询;

SELECT destination.Id, destination.SomeColumn,
(SELECT NewId FROM table1 where OldId = destination.ForeignKeyColumn) as ForeginKeyColumn,
-- some more things
FROM MyDestinationTable destination;

我有一个名为 MyDestinationTable 的 table,它有一个 ForeignKeyColumn,它有旧的外键 ID,所以我需要 select 那个 ForeignKeyColumn 和来自 table1 的新外键(table1 有新旧外键)。

好吧,这是我已经解决的问题的一部分,当我与多个 table 有关系时就会出现问题,例如 ForeignKeyColumn 与 table1 或 table2 或 tableN,即;

row 1: destination.ForeignKeyColumn may have a reference ONLY in table1
row 2: destination.ForeignKeyColumn may have a reference ONLY in table3
row 3: destination.ForeignKeyColumn may have a reference ONLY in table10

外键只能存在于N_tables中的一个table中,有这部分;

(SELECT NewId FROM table1 where OldId = destination.ForeignKeyColumn) as ForeginKeyColumn,

是否可以在 N table 中搜索 NewId 直到找到它(就在那个部分)?

从 table1 到 tableN

类似于 table1 中的 NewId?不,那么 table2 中的 NewId?不,那么 table3 中的 NewId?是的,将那个作为 ForeginKeyColumn,不要查看 table 的其余部分(同样,新外键将仅存在于 N table 中的一个 table 上) .

如果可能的话,知道怎么做吗?需要提到我对这种查询很糟糕。

此致!

我会建议多个 left joins 和 coalesce():

select d.*, coalesce(t1.newid, t2.newid, . . . )
from MyDestinationTable d left join
     table1 t1
     on t1.oldid = d.ForeignKeyColumn left join
     table1 t2
     on t2.oldid = d.ForeignKeyColumn left join
     . . .