我遇到了以下问题,我想知道是否有可能用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个表中的一个表上)。
如果可能的话,你知道怎么做吗?我得提一下,我对这类问题很在行。
当做!
1条答案
按热度按时间8tntrjer1#
我建议多点
left join
s和coalesce()
: