在BigQuery中使用`With`然后`Delete`

问题描述 投票:1回答:1

使用BigQuery我想删除在Common Table Expressionwith中具有id的行

所以这是我的查询:

WITH
  redundant AS (
  SELECT
    id,
    MAX(updated_at) AS updated_at,
    COUNT(*) AS counter
  FROM
    t1
  GROUP BY
    id
  HAVING
    counter >= 2)
DELETE
FROM
  t1
WHERE
  id IN (redundant.id)
  AND updated_at NOT IN (redundant.updated_at )

我预计行将被删除,但我收到此错误消息: Syntax error: Expected "(" or keyword SELECT but got keyword DELETE at [13:1]

mysql google-bigquery sql-delete with-statement
1个回答
2
投票

以下是BigQuery Standard SQL

#standardSQL
DELETE FROM `project.dataset.table` d
WHERE EXISTS (
  WITH redundant AS (
    SELECT id,
      MAX(updated_at) AS updated_at,
      COUNT(*) AS counter
    FROM `project.dataset.table`
    GROUP BY id
    HAVING counter > 2
  )
  SELECT 1 FROM redundant 
  WHERE d.id = id AND d.updated_at != updated_at
) 
© www.soinside.com 2019 - 2024. All rights reserved.