作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读 Redshift 中的 SQL 查询,但无法理解最后一部分:
...
LEFT JOIN (SELECT MIN(modified) AS first_modified FROM user) ue
ON 1=1
这里的ON 1=1
是什么意思?
最佳答案
意图是无条件 LEFT JOIN
,与 CROSS JOIN
不同因为左表表达式中的所有行都会被返回,即使右表表达式中没有匹配项 - 而 CROSS JOIN
从结果中删除这些行。 More on joins in the manual.
但是:
1=1
在 Postgres 和 all derivatives 中毫无意义包括亚马逊 Redshift 。只需使用 true
.这可能是从另一个不支持 boolean
的 RDBMS 继承而来的。正确输入。
... LEFT JOIN (SELECT ...) ue ON true
然后,LEFT JOIN
对于这个带有 SELECT MIN(modified) FROM user
的特定子查询毫无意义在右边,因为一个SELECT
具有聚合函数 ( min()
) 而没有 GROUP BY
子句总是只返回一行。这种情况(但不是可能找到没有行的其他情况)可以简化为:
... CROSS JOIN (SELECT MIN(modified) AS first_modified FROM user) ue
关于sql - JOIN (SELECT ...) ue ON 1=1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35374860/
我是一名优秀的程序员,十分优秀!