【发布时间】:2020-10-02 16:52:48
【问题描述】:
我在 BigQuery 中使用 MERGE 查询,发现我无法根据条件更新特定行。 例如,我的表中已经存在 5 条记录。我只想更新值已更改的两条记录。当我执行以下查询时,所有行都会更新。这意味着 3 条记录中有 5 条我不想更改值。只要我收到应该更改现有记录的新值。
MERGE `test.organization_user` T
USING `test.user_details` S
ON T.user_id = S.user_id
WHEN MATCHED AND
(
T.organization <> S.organization OR
T.contact_number <> S.contact_number
)
THEN
UPDATE
SET
T.organization = S.organization,
T.contact_number = S.contact_number
WHEN NOT MATCHED THEN
INSERT ROW
对于这种情况是否有任何解决方案或使用合并它将更新所有匹配的记录,如果我们不想更新现有的记录,那么我们是否应该为源表中这些记录的所有字段提供值(将从哪些值更新到目标表)?
一个例子是:
【问题讨论】:
-
你能分享一些示例数据吗?
-
@SomendraKanaujia 我已经更新了问题中的示例。
标签: sql merge google-bigquery dml