Используя `With` затем` Delete` в BigQuery - PullRequest
1 голос
/ 30 апреля 2019

Используя BigQuery, я хочу удалить строки с идентификатором в Common Table Expression или with

так что это мой запрос:

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]

1 Ответ

2 голосов
/ 30 апреля 2019

Ниже для 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
) 
...