Sql 从bigquery中的表中删除重复项

Sql 从bigquery中的表中删除重复项,sql,google-bigquery,Sql,Google Bigquery,通过执行下面的查询,我在表中找到了重复项 SELECT name, id, count(1) as count FROM [myproject:dev.sample] group by name, id having count(1) > 1 现在,我想使用DML语句删除这些基于id和名称的重复项,但它会显示“0行受影响”消息。 我错过什么了吗 DELETE FROM PRD.GPBP WHERE id not in(select id from [myproje

通过执行下面的查询,我在表中找到了重复项

SELECT name, id, count(1) as count
  FROM [myproject:dev.sample] 
  group by name, id 
  having count(1) > 1
现在,我想使用DML语句删除这些基于id和名称的重复项,但它会显示“0行受影响”消息。 我错过什么了吗

DELETE FROM PRD.GPBP WHERE
    id not in(select id from [myproject:dev.sample] GROUP BY id) and 
    name not in (select name from [myproject:dev.sample] GROUP BY name) 

我建议您创建一个没有重复项的新表。删除原始表并将新表重命名为原始表

您可以找到如下重复项:

Create table new_table as 
Select name, id, ...... , put our remaining 10 cols here
FROM(
SELECT *, 
ROW_NUMBER() OVER(Partition by name , id Order by id) as rnk
FROM [myproject:dev.sample] 
)a
WHERE rnk = 1;

然后删除旧表,并用旧表名重命名
new\u table

我建议您创建一个没有重复项的新表。删除原始表并将新表重命名为原始表

您可以找到如下重复项:

Create table new_table as 
Select name, id, ...... , put our remaining 10 cols here
FROM(
SELECT *, 
ROW_NUMBER() OVER(Partition by name , id Order by id) as rnk
FROM [myproject:dev.sample] 
)a
WHERE rnk = 1;
然后删除旧表并用旧表名重命名
new\u table

下面的查询(BigQuery标准SQL)应该更适合像您的情况那样进行重复数据消除

#standardSQL
SELECT AS VALUE ANY_VALUE(t)
FROM `myproject.dev.sample` AS t
GROUP BY name, id
如果您从UI中运行它-您只需将
写入首选项设置为
覆盖表
,就可以完成

或者,如果您愿意,您可以使用DML的
插入到新表中,然后复制到原始表上

同时,最简单的方法如下(使用DDL)

下面的查询(BigQuery标准SQL)对于重复数据消除应该更为理想,就像您的情况一样

#standardSQL
SELECT AS VALUE ANY_VALUE(t)
FROM `myproject.dev.sample` AS t
GROUP BY name, id
如果您从UI中运行它-您只需将
写入首选项设置为
覆盖表
,就可以完成

或者,如果您愿意,您可以使用DML的
插入到新表中,然后复制到原始表上

同时,最简单的方法如下(使用DDL)


@RyanWilson如果他使用第一次查询进行删除,他将删除组中的所有记录,而不仅仅是重复记录。你能提到这个查询吗?@RyanWilson他的查询将返回计数大于1的所有记录,同意。但是
delete
将删除该组
name和id
的所有记录。id在我的表中不是唯一的。这就是我在name和id上复制的原因id@NikhilBOORLA您的表上有标识列吗?区分具有相同id和名称的记录1和记录2的内容?@RyanWilson如果他使用第一次查询进行删除,他将删除组中的所有记录,而不仅仅是重复记录。您能提到该查询吗?@RyanWilson他的查询将返回计数大于1的所有记录,同意。但是
delete
将删除该组
name和id
的所有记录。id在我的表中不是唯一的。这就是我在name和id上复制的原因id@NikhilBOORLA您的表上有标识列吗?要区分具有相同id和名称的记录1和记录2吗?