这个问题以前以多种形式被问过。但提出的解决方案都不适用于我的情况。
我正在使用GBQ。
我有这张桌子:
Hour Orders
2022-01-12T00:00:00 12
2022-01-12T01:00:00 8
2022-01-12T02:00:00 9
我想创建一个查询,在以下条件下每小时自动将数据插入该表:
- 如果";最近一小时";我想插入的已经存在,我不想插入两次
我尝试了以下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)
此语法在GBQ中返回一个错误,尽管通常接受SQL语法。
有办法做到这一点吗?
我的首要任务是插入而不重复我不关心查询中的UPDATE部分。
理想情况下,我想要这样的东西(我知道这种语法不存在(:
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工作方式不同。如果