首页 > 解决方案 > 两个表之间的 BigQuery 差异

问题描述

我正在尝试查找并返回不匹配的行,同时在 2 个表之间进行搜索

两个表都有相同的 3 列。两个表的 ID 数量完全相同。表格是“a”和“b”

科尔斯;(ID,国家,通过失败)

我正在尝试返回表之间 passfail 不匹配的所有行(其中 id 匹配)

我尝试运行 2 个查询,但似乎无法打印结果行。


SELECT a.*
FROM a
    LEFT JOIN b ON (a.passfail = b.passfail)
WHERE a.passfail IS NULL


SELECT a.* 
FROM a 
AS a JOIN b 
AS b 
ON a.passfail = b.passfail 
WHERE a.passfail != b.passfail

这些查询似乎都不适合我。

任何帮助或建议表示赞赏!

标签: google-cloud-platformgoogle-bigquery

解决方案


您必须加入id字段。这是一个例子:

WITH a as (SELECT * FROM UNNEST(ARRAY<STRUCT<id INT64, country STRING, passfail BOOL>>[(1, 'uk', true), (3, 'fr', false)])),
     b as (SELECT * FROM UNNEST(ARRAY<STRUCT<id INT64, country STRING, passfail BOOL>>[(1, 'uk', true), (3, 'fr', true)]))

SELECT
  a.*
FROM
  a
LEFT JOIN
  b
ON
  (a.id = b.id)
WHERE
  a.passfail != b.passfail

推荐阅读