gpt4 book ai didi

google-bigquery - BigQuery 全外连接产生 "left join"结果

转载 作者:行者123 更新时间:2023-12-01 15:27:55 24 4
gpt4 key购买 nike

我有 2 个表,它们都包含不同的 id 值。有些 id 值可能出现在两个表中,有些值对于每个表都是唯一的。表 1 有 10,910 行,表 2 有 11,304 行

运行左连接查询时:

SELECT COUNT(DISTINCT a.id)
FROM table1 a
JOIN table2 b on a.id = b.id

我总共有 10,896 行或 10,896 个 ID 在两个表之间共享。

但是,当我运行 FULL OUTER JOIN 时在像这样的 2 张 table 上:
SELECT COUNT(DISTINCT a.id)
FROM table1 a
FULL OUTER JOIN EACH table2 b on a.id = b.id

我总共得到 10,896 行,但我期望 table1 中的所有 10,910 行。

我想知道我的查询语法是否有问题。

最佳答案

当您使用 EACH 时 - 看起来您是在 Legacy SQL 模式下运行查询。
在 BigQuery 旧版 SQL 中 - COUNT(DISTINCT)函数是概率性的 - 给出统计近似值,不保证准确。
您可以使用 EXACT_COUNT_DISTINCT()取而代之的功能 - 这个给你确切的数字,但在后端贵一点

更好的选择 - 只需使用 Standard SQL
对于您的特定查询,您只需删除 EACH关键字,它应该作为一个魅力

#standardSQL
SELECT COUNT(DISTINCT a.id)
FROM table1 a
JOIN table2 b on a.id = b.id



#standardSQL
SELECT COUNT(DISTINCT a.id)
FROM table1 a
FULL OUTER JOIN table2 b on a.id = b.id

关于google-bigquery - BigQuery 全外连接产生 "left join"结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41755073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com