BigQuery - DELETE 语句以删除重复项 Group by Id

BigQuery - DELETE statement to remove duplicates Group by Id

我正在尝试使用 DELETE 从我的 BigQuery table 中删除重复记录。

我找到了上述问题的多种解决方案,但大多数使用 CREATEREPLACESELECT

我找到的使用 DELETE 的最接近的解决方案是:

BigQuery Standard SQL: Delete Duplicates from Table

我对以下解决方案有后续问题:

#standardSQL
DELETE FROM `yourproject.yourdataset.duplicates`
WHERE STRUCT(id, loadTime) NOT IN (
    SELECT AS STRUCT id, MAX(loadTime) loadTime 
    FROM `yourproject.yourdataset.duplicates` where id= '123'
    GROUP BY id)

这条语句删除table中所有不满足NOT IN条件的记录。例如,如果我的 table 如下所示:

Id      Loadtime
123        5
123        4
456        2
321        1

上面的查询删除了除第一行以外的所有记录。 我如何修改查询,以便它只删除第二行,即它只删除 id 组?

最终输出应该是:

 Id      Loadtime
 123        5
 456        2
 321        1

下面应该符合您的预期

#standardSQL
DELETE FROM `yourproject.yourdataset.duplicates`
WHERE STRUCT(id, loadTime) NOT IN (
SELECT AS STRUCT id, MAX(loadTime) loadTime 
FROM `yourproject.yourdataset.duplicates` 
GROUP BY id)  

因此,在您的示例中 - 它只会删除第二行

Id  Loadtime     
123 4