使用BigQuery我想删除在Common Table Expression
或with
中具有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]
以下是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
)