0

我们必须在 BigQuery 中使用 Legacy SQL。但是,Merge 在 Legacy SQL 中不起作用。我们如何在 Legacy SQL 中编写以下查询?

MERGE [ABC:xyz.tmp_cards] AS target_tbl 
USING [ABC:xyz.tmp_cards_1533188902] AS source_tbl 
ON target_tbl.id = source_tbl.id
WHEN MATCHED AND target_tbl.id = source_tbl.id THEN
   UPDATE SET target_tbl.id = source_tbl.id,
   target_tbl.user_id = source_tbl.user_id,
   target_tbl.expiration_date = source_tbl.expiration_date,
   target_tbl.created_at = source_tbl.created_at,
   target_tbl.updated_at = source_tbl.updated_at 
WHEN NOT MATCHED THEN 
   INSERT (id, user_id, expiration_date, created_at, updated_at) 
   VALUES (source_tbl.id, source_tbl.user_id, source_tbl.expiration_date, source_tbl.created_at, source_tbl.updated_at)
4

1 回答 1

1

就在今年,标准 SQL 的 Beta 版中出现了对 DML MERGE 语句的支持。在旧版 SQL 中无法做到这一点,这就是为什么标准 SQL 是用于查询存储在 BigQuery 中的数据的首选 SQL 方言。因为新功能适用于 BigQuery 的最后一个 DML,而不是旧功能。

于 2018-10-25T11:54:23.917 回答