【发布时间】:2021-05-30 14:34:54
【问题描述】:
以下查询之间的语义差异是什么?对我来说,在我快速执行它们之前,它们看起来都很相似。这是 presto 特有的东西还是我在 SQL 标准中遗漏了什么?
形式一:ON子句中指定的所有条件。
SELECT
t1.colA,
t1.colB,
t1.colC,
t2.colD
FROM t1
LEFT OUTER JOIN t2
ON t1.colA = t2.colA
AND t1.colB = t2.colB
AND t1.colE = 1
AND t2.colF = 2;
形式2:改为WHERE子句中指定的一些条件。
SELECT
t1.colA,
t1.colB,
t1.colC,
t2.colD
FROM t1
LEFT OUTER JOIN t2
ON t1.colA = t2.colA
AND t1.colB = t2.colB
WHERE
t1.colE = 1
AND t2.colF = 2;
表格 1 产生一些行,但表格 2 没有,但它们不应该是等价的吗?
【问题讨论】: