【问题标题】:BigQuery/I can't correctly result using "in" clausesBigQuery/我无法正确使用“in”子句
【发布时间】:2019-06-27 14:44:15
【问题描述】:

我想提取完全匹配的数据,而不是部分匹配的数据。
但是,如果我执行下面的 sql 代码,我无法提取它们:

我估计这个sql代码没有提取数据,但是这个提取了所有的数据行。

【SQL代码】

WITH a AS(
    SELECT
        001 AS id_a,
        112345678901234567 AS x
    UNION ALL
    SELECT
        002,
        112345678901233567
    UNION ALL
    SELECT
        003,
        112345678901232568
),
comp_a AS(
    SELECT
        *
    FROM
        a
    WHERE
        x IN(112345678901234000, 112345678901233000, 112345678901232000)
),
comp_b AS(
    SELECT
        004 AS id_b
    UNION ALL
    SELECT
        005
)
SELECT
    id_a,
    id_b
FROM
    comp_a
    LEFT OUTER JOIN
        comp_b
    ON  (
            comp_a.id_a = comp_b.id_b
        )
WHERE
    comp_b.id_b IS NULL
;

我认为“in”子句用于完美匹配。 但是,也许,我认为这段 sql 代码不是在 "in" 子句中执行的,而是在 "like" 子句中执行的。

我会很高兴你回答我的问题的解决方案。

■补充说明:
・删除了浏览器和Bigquery的cashe。但我无法解决它。
・这个sql代码是示例代码,因为我不能暴露真实的sql代码。
・我可以在 BigQuery 的 One 环境中重现此问题,
但我无法在 BigQuery 的其他环境中重新创建。
这个问题可能不是sql代码问题,而是环境问题
或设置。

【问题讨论】:

  • 您可能想要发布实际的IN 子句,因为您的伪代码不清楚(至少对我来说不是)。
  • '删除浏览器的缓存和 Bigquery 没有帮助' - 你试过关闭你的电脑吗?
  • 好的。显然那是个玩笑 :o) 而不是做不相关的事情 - 而是阅读 How to create a Minimal, Reproducible Example 并遵循建议,这样我们才能真正为您提供帮助。帮助我们帮助你!!!
  • 感谢您的 cmets。我写了你可以执行的sql代码。
  • 我仍然不确定 - 预期的输出是什么?您可能想再次阅读我在上面提供的链接

标签: sql google-bigquery


【解决方案1】:

感谢您回答我的问题。

我解决了我的问题。 我的问题的原因不是 BigQuery ,而是 Excel 的格式。

详情: 我尝试使用 Excel 检查数据,因为结果是很多数据。 遗憾的是,由于Excel的格式是数字类型,部分数字数据是四舍五入的。所以我把正确的结果误解为错误的结果。

对不起,我的误解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-16
    • 2021-11-20
    • 2016-05-18
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多