我有两个表中包含日期字段。我想从表1中选择数据,其中日期是表2中任何日期的+/- 1天。
答案 0 :(得分:0)
尝试这样的事情:
select * from table1,table2
where table1.date BETWEEN (table2.date - '1 day'::interval)
AND (table2.date + '1 day'::interval)
and ...
答案 1 :(得分:0)
如果只有+/- 1天,您可以使用这样的解决方法:
select col1, col2, ...
from table1
where date_col in (select distinct date_col
from table2
union all
select distinct (date_col - '1 day'::interval)
from table2
union all
select distinct (date_col + '1 day'::interval)
from table2
);
这具有相当好的性能,因为子查询只计算一次,并且将用于比较