【发布时间】:2018-09-07 06:51:05
【问题描述】:
我在 BigQuery 中有以下查询:
#Standard SQL
SELECT *
FROM `Table_1`
LEFT JOIN `Table_2` ON (timestamp BETWEEN TimeStampStart AND TimeStampEnd)
但我收到以下错误:
Error: LEFT OUTER JOIN cannot be used without a condition that is an equality of fields from both sides of the join.
如果我使用 JOIN 而不是 LEFT JOIN,它可以工作,但我想保留 Table_1 中的所有行(还有那些与 Table_2 不匹配的行)
如何做到这一点?
【问题讨论】:
-
表1和表2是什么关系? ,如果没有关系,我更喜欢使用 Union 子句而不是在这种情况下不相关的连接
-
表 1 包含一列带有时间戳(和一些其他变量),而表 2 还包含一些其他变量加上两列带有时间戳(一个表示开始时间,另一个表示结束时间) .所以我想合并这两个表,这样当 Table_1 的时间戳位于开始时间和结束时间之间时,两个表的变量就会被连接/合并。
-
好的,你能试试 SELECT * FROM
Table_1LEFT JOINTable_2ON(table1.timestamp >= table2.TimeStampStart AND table1.timestamp -
我试过了,但不幸的是我仍然遇到同样的错误。
-
您从谷歌搜索带有和不带标签的错误消息的众多点击中学到了什么? How to Ask 此外,左连接返回内连接行联合所有由空值扩展的不匹配的左表行。因此,您可以合并单独的部分。如果不是很明显,那肯定是一个常见问题。 PS请通过帖子编辑澄清,而不是cmets。 PS Re 用不等式替换:BigQuery does support inequality joins now - make sure to uncheck the "use legacy SQL option".
标签: sql date google-bigquery left-join