GBQ - 仅当 SELECT 查询 returns 结果时才执行插入查询

GBQ - Execute INSERT query ONLY if SELECT query returns results

这个问题以前以多种形式被问过。但是 none 提出的解决方案适用于我的情况。

我正在使用 GBQ。

我有这个 table:

        Hour            Orders
2022-01-12T00:00:00       12
2022-01-12T01:00:00       8
2022-01-12T02:00:00       9

我想创建一个查询以每小时自动将数据插入此table,在这些条件下:

我尝试了以下 SQL 查询:

IF EXISTS (SELECT 1 FROM `Table` WHERE Hour = var_most_recent_hour) 
    UPDATE `Table` SET Orders = var_most_recent_orders WHERE Hour = var_most_recent_hour
ELSE 
    INSERT INTO `Table` (Hour, Orders) VALUES (var_most_recent_hour, var_most_recent_orders)

虽然通常接受 SQL 语法,但此语法在 GBQ 中返回错误。

有办法吗?

我的首要任务是不重复插入。 我不关心查询中的更新部分。

理想情况下我想要类似的东西(我知道这种语法不存在):

IF NOT EXISTS (SELECT 1 FROM `Table` WHERE Hour = var_most_recent_hour) 
    INSERT INTO `Table` (Hour, Orders) VALUES (var_most_recent_hour, var_most_recent_orders)

谢谢

尝试下面的示例代码

declare  most_rcnt_hour time;

INSERT INTO dataset.targettable(...

SELECT *
FROM dataset.targettable T
JOIN (SELECT most_rcnt_hour AS most_rcnt_hour) as S
ON T.rcnt_hour <> S.most_rcnt_hour

请注意,BQ 中的 IF 的工作方式不同。 IF