首页 > 解决方案 > postgres的右连接返回意外结果

问题描述

我有以下查询

select date, count(t.p_id)
                   from someTable t
                   right join generate_series('2019-09-01'::timestamp, least(current_date, '2019-09-05'), interval '1 day') AS g(date) on t.someDate @> date
                   where t.s_id = 42 and t.skl_id = 5
                   group by date
                   order by date

如果 t.s_id 或 t.skl_id 没有任何内容,我会返回空结果。但据我所知,generate_series...我希望得到 5 个原始数据。我错过了什么?

标签: postgresql

解决方案


如果子句中有条件,则在执行连接WHERE(逻辑上)对其进行评估。所以这样的子句可以从连接中删除所有行。WHERE

如果您更希望NULL左侧的值,则必须删除该WHERE子句并将它们移动到该ON子句。


推荐阅读