google-bigquery - 使用LEFT OUTER JOIN或Anti-join的BigQuery过滤器

标签 google-bigquery

我可以想到两种在Google BigQuery中进行过滤的方法。 (假设Table2很小。)哪种过滤方法会更好,为什么呢?它取决于table1的大小吗?还是有另一种更好的方法?

SELECT
  a.ID
FROM
  table1 AS a
LEFT OUTER JOIN
  table2 AS b
ON
  a.ID = b.ID
WHERE 
  b.ID is NULL


要么

SELECT
  ID
FROM
  table1
WHERE
  ID NOT IN (
    SELECT
      ID
    FROM
      table2)

最佳答案

第二个仅限于一个,只有一个字段可以被过滤。

首先可用于按多个字段进行过滤,如下所示

SELECT
  a.ID
FROM
  table1 AS a
LEFT OUTER JOIN
  table2 AS b
ON
  a.ID = b.ID AND a.Field2 = b.Field2 AND a.Field3 = b.Field3
WHERE 
  b.ID is NULL

关于google-bigquery - 使用LEFT OUTER JOIN或Anti-join的BigQuery过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34927258/

相关文章:

java - 如何在没有不成对的代理字符的情况下将表情符号等字符编码为 UTF8?

node.js - Bigquery API 间歇性返回 http 错误 400 "Bad Request"

google-bigquery - 有没有一种简单的方法可以将 BigQuery 中的行转换为 JSON?

google-bigquery - JSON_EXTRACT 如何提取动态键的值

datetime - BigQuery - 从时区名称获取时区偏移量

google-drive-api - 使用带Google表格的BigQuery API时"Encountered an error while globbing file pattern"错误

sql - BigQuery - 将科学记数法转换为十进制格式

google-bigquery - BigQuery 标准 sql - 不匹配正则表达式

google-bigquery - 将字符串数组转换为单行值

javascript - 尝试访问 BigQuery 的 Oauth 客户端无效