【问题标题】:Delete rows from Table, remove unpaid transaction从表中删除行,删除未支付的交易
【发布时间】:2016-11-04 01:41:46
【问题描述】:

如果要删除行怎么办?

使用 UNNEST -

错误:无法访问类型为值的字段 hitId ARRAY>

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')

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    如果我理解正确,我认为您实际上想要:

    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

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

    【讨论】:

    • 运行查询。结果 - 57 行受影响 - 删除了表中的所有行。必须 - 1 行受影响
    • 我仍在尝试了解查询的意图。如果它删除所有行,那么每一行都有一个具有该 ID 的事务。您是否尝试从 hits 中删除具有该事务 ID 的条目而不实际删除行本身?如果是这样,我可以更改我的答案以改用UPDATE
    • 目标 - 删除交易。或 transactionRevenue=null 和 transaction.transactionId=null
    • 看看编辑是否有帮助,但我仍然觉得你的要求有脱节。
    猜你喜欢
    • 2023-01-12
    • 2013-05-19
    • 2020-09-13
    • 2018-11-29
    • 2020-10-24
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    相关资源
    最近更新 更多