【发布时间】: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