从表中删除行,删除未付费的事务

时间:2016-11-03 13:37:11

标签: google-bigquery

如果要删除行怎么办?

使用UNNEST -

  

错误:无法在类型值上访问字段hitId   ARRAY< STRUCT< hitId STRING,isEntrance INT64,isExit INT64,...>>

delete
FROM
xxxx.session_streaming_20161029
WHERE 
h.hitId = (
SELECT hitId
FROM xxxx.session_streaming_20161029, UNNEST(hits) as h
WHERE h.transaction.transactionId = '123456')

1 个答案:

答案 0 :(得分:0)

如果我理解正确,我认为你真的想要:

delete FROM xxxx.session_streaming_20161029
WHERE EXISTS (
  SELECT 1
  FROM xxxx.session_streaming_20161029,
    UNNEST(hits) as h
  WHERE h.transaction.transactionId = '123456');

我们的想法是匹配存在某些事务ID且值为'123456'的所有行。

编辑:如果目标是使用此事务ID从hits中删除条目,而不是删除hits包含事务ID的整个行,则可以使用UPDATE:< / p>

UPDATE xxxx.session_streaming_20161029
SET hits =
  ARRAY(SELECT hit FROM UNNEST(hits)
        WHERE transaction.transactionId = '123456');