gpt4 book ai didi

sql - JOIN (SELECT ...) ue ON 1=1?

转载 作者:行者123 更新时间:2023-11-29 11:09:28 24 4
gpt4 key购买 nike

我正在阅读 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com