【发布时间】:2018-06-16 06:04:20
【问题描述】:
有很多很棒的关于 SQL 的帖子,它们选择唯一的行并写入(截断)一个表,以便删除 dus。例如
WITH ev AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY loadTime DESC) AS rowNum
FROM `duplicates`
)
SELECT
* EXCEPT(rowNum)
FROM
ev
WHERE rowNum = 1
我尝试使用 DML 和 DELETE 稍微不同地探索这一点(例如,如果您不想使用 BQ savedQuery,只需执行 SQL)。我想做的大致是:
WITH dup_events AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY loadTime DESC) AS rowNum
FROM `duplicates`
)
DELETE FROM
dup_events
WHERE rowNum > 1
但在控制台中出现此错误:
Syntax error: Expected "(" or keyword SELECT but got keyword DELETE at [10:1]
是否可以使用 DELETE 来实现(标准 SQL)?
谢谢!
【问题讨论】:
标签: google-bigquery