当前位置:  开发笔记 > 数据库 > 正文

BigQuery全外连接产生"左连接"结果

如何解决《BigQuery全外连接产生"左连接"结果》经验,为你挑选了1个好方法。

我有2个表,两个表都包含不同的id值.某些id值可能出现在两个表中,有些值对于每个表都是唯一的.Table1有10,910行,Table2有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在这两个表上运行时:

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

我总共获得了10,896行,但我期待来自table1的所有10,910行.

我想知道我的查询语法是否存在问题.



1> Mikhail Berl..:

当您使用EACH时 - 看起来您正在以旧版SQL模式运行查询.
在BigQuery Legacy SQL中 - COUNT(DISTINCT)函数是概率性的 - 给出统计近似值,并不保证是精确的.
您可以使用EXACT_COUNT_DISTINCT()函数 - 这个函数可以为您提供确切的数字但后端稍贵一些

更好的选择 - 只需使用标准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

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有