【发布时间】:2019-09-13 23:09:02
【问题描述】:
是否可以基于 JOIN 与 BigQuery 中的现有表对表执行更新?
此查询中没有任何双精度数
SELECT profile_id, count(*) as cnt
FROM `instagram-tags-c67d8.sample_dataset.influence`
GROUP BY profile_id HAVING cnt > 1
它也适用于
select a.profile_id, b.username
from `instagram-tags-c67d8.sample_dataset.influence` AS a
inner join (
SELECT
DISTINCT profile_id, username
FROM `instagram-tags-c67d8.sample_dataset.profile_id_lut`) AS b
ON a.profile_id = b.profile_id
where a.username is null
现在我只有这个问题 UPDATE/MERGE 必须与每个目标行最多匹配一个源行
UPDATE
`instagram-tags-c67d8.sample_dataset.influence` AS a
SET
a.username = b.username
FROM (
SELECT
DISTINCT profile_id, username
FROM `instagram-tags-c67d8.sample_dataset.profile_id_lut`) AS b
WHERE
a.username IS NULL
AND a.profile_id = b.profile_id
【问题讨论】:
-
该错误似乎表明
profile_id_lut中有多个记录与influence中的给定profile_id匹配。 -
是的,没错
-
好的,那么您想如何处理该用例?也许从可用的
usernames 中选择最大值或最小值? -
所以,数据库有很多行不同的用户名,但唯一的 profile_id
SELECT profile_id, count(*) as cnt FROM ( SELECT DISTINCT profile_id, username FROM instagram-tags-c67d8.sample_dataset.profile_id_lut ) b GROUP BY profile_id HAVING cnt > 1;因此,我认为最好的办法是删除旧用户名
标签: sql google-bigquery dml