sql从n个表中选择唯一的foreignkey

5jdjgkvh  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(406)

我遇到了以下问题,我想知道是否有可能用googlebigquery中的一个查询来解决它。
得到这个查询;

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

我有一个名为mydestinationtable的表,它有一个foreignkeycolumn,它有一个旧的外键id,所以我需要从表1中选择一个foreignkeycolumn和一个新的外键(表1有旧的和新的外键)。
好吧,这是我已经解决的问题的一部分,当我与多个表有关系时,问题就出现了,比如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个表中的一个表中,具有此部分;

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

是否可以在n个表中搜索newid,直到找到它(就在该部分)?
从表1到表n
像表1中的newid?不,那么表2中的newid呢?不,那么表3中的newid?是的,将其作为foreginkeycolumn获取,并且不要查看其余的表(同样,新的外键将只存在于n个表中的一个表上)。
如果可能的话,你知道怎么做吗?我得提一下,我对这类问题很在行。
当做!

8tntrjer

8tntrjer1#

我建议多点 left join s和 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
     . . .

相关问题