一个 table 中的每一行的 PostgreSQL 加入另一个 table 中的所有行
PostgreSQL for each row from one table join all rows from another table
在 table A
我有从 2014-01-01
到 2014-12-31
的日期
action_date
2014-01-01
2014-01-02
2014-01-03
...
2014-12-31
在tableB
我有一些信息像
id name action_date deletion_date
1 nik 2013-01-01 2014-02-03
2 tom 2014-06-02 2014-06-30
3 lola 2013-12-30 2014-01-01
如果activation_date<=action_date<=deletion_date
,我想将 B table 中的行加入每个 A
table 行
例如
action_date id name action_date deletion_date
2014-01-01 1 nik 2013-01-01 2014-02-03
2014-01-01 3 lola 2013-12-30 2014-01-01
2014-01-02 1 nik 2013-01-01 2014-02-03
2014-01-03 1 nik 2013-01-01 2014-02-03
[...]
2014-02-03 1 nik 2013-01-01 2014-02-03
2014-06-02 2 tom 2014-06-02 2014-06-30
2014-06-03 2 tom 2014-06-02 2014-06-30
[...]
2014-06-03 2 tom 2014-06-02 2014-06-30
我尝试在没有 on 语句的情况下使用左连接,只有 where 条件。不幸的是,它不起作用。
您可以在 join
条件中使用 between
运算符:
SELECT a.action_date, b.*
FROM b
JOIN a ON a.action_date BETWEEN b.activation_date AND b.deletion_date
在 table A
我有从 2014-01-01
到 2014-12-31
action_date
2014-01-01
2014-01-02
2014-01-03
...
2014-12-31
在tableB
我有一些信息像
id name action_date deletion_date
1 nik 2013-01-01 2014-02-03
2 tom 2014-06-02 2014-06-30
3 lola 2013-12-30 2014-01-01
如果activation_date<=action_date<=deletion_date
A
table 行
例如
action_date id name action_date deletion_date
2014-01-01 1 nik 2013-01-01 2014-02-03
2014-01-01 3 lola 2013-12-30 2014-01-01
2014-01-02 1 nik 2013-01-01 2014-02-03
2014-01-03 1 nik 2013-01-01 2014-02-03
[...]
2014-02-03 1 nik 2013-01-01 2014-02-03
2014-06-02 2 tom 2014-06-02 2014-06-30
2014-06-03 2 tom 2014-06-02 2014-06-30
[...]
2014-06-03 2 tom 2014-06-02 2014-06-30
我尝试在没有 on 语句的情况下使用左连接,只有 where 条件。不幸的是,它不起作用。
您可以在 join
条件中使用 between
运算符:
SELECT a.action_date, b.*
FROM b
JOIN a ON a.action_date BETWEEN b.activation_date AND b.deletion_date