Bigquery 删除另一个 table 中存在的行
Bigquery delete rows that are present in another table
我想删除 table t1 中存在于 table t2 中的所有行。
table_1 is as follows
a b c
1 4 3
3 334 3
5 4 5
6 5 4
4 85 3
7 332 54
8 46 6
45 42 5
7 576 6
和table2如下
a b c
7 332 54
3 334 3
7 576 6
如前所述,我想删除 table t1 中出现在 table t2 中的所有行。
所以我使用了代码
DELETE `projectname.datasetname.table1` t
WHERE t IN (SELECT * from `projectname.datasetname.table2`)
但它不起作用,理想的解决方案是什么?
我想要的结果是
a b c
1 4 3
5 4 5
6 5 4
4 85 3
8 46 6
45 42 5
谢谢
如果需要查看整条记录,可以使用:
DELETE `projectname.datasetname.table1` t
WHERE EXISTS (SELECT 1
FROM `projectname.datasetname.table2` t2
WHERE TO_JSON_STRING(t2) = TO_JSON_STRING(t)
);
但是,通常对某种简单的 id 列进行比较通常就足以进行此类比较。
下面使用
DELETE `projectname.datasetname.table1` t
WHERE TO_JSON_STRING(t) IN (SELECT TO_JSON_STRING(t) from `projectname.datasetname.table2` t);
我想删除 table t1 中存在于 table t2 中的所有行。
table_1 is as follows
a b c
1 4 3
3 334 3
5 4 5
6 5 4
4 85 3
7 332 54
8 46 6
45 42 5
7 576 6
和table2如下
a b c
7 332 54
3 334 3
7 576 6
如前所述,我想删除 table t1 中出现在 table t2 中的所有行。
所以我使用了代码
DELETE `projectname.datasetname.table1` t
WHERE t IN (SELECT * from `projectname.datasetname.table2`)
但它不起作用,理想的解决方案是什么? 我想要的结果是
a b c
1 4 3
5 4 5
6 5 4
4 85 3
8 46 6
45 42 5
谢谢
如果需要查看整条记录,可以使用:
DELETE `projectname.datasetname.table1` t
WHERE EXISTS (SELECT 1
FROM `projectname.datasetname.table2` t2
WHERE TO_JSON_STRING(t2) = TO_JSON_STRING(t)
);
但是,通常对某种简单的 id 列进行比较通常就足以进行此类比较。
下面使用
DELETE `projectname.datasetname.table1` t
WHERE TO_JSON_STRING(t) IN (SELECT TO_JSON_STRING(t) from `projectname.datasetname.table2` t);