Postgres的正确连接返回意外结果

时间:2019-09-26 20:37:48

标签: postgresql

我有以下查询

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个原始数字。 我错过了什么?

1 个答案:

答案 0 :(得分:1)

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

如果您想在左侧使用NULL值,则必须删除WHERE子句并将其移到ON子句。