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吗?