在表A中,我有从2014-01-012014-12-31的日期

 action_date
 2014-01-01
 2014-01-02
 2014-01-03
 ...
 2014-12-31

在表中我有一些信息
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

如果B
例如
 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语句的left join,只使用where条件。不幸的是,它不起作用。

最佳答案

您可以在between条件下使用join运算符:

SELECT a.action_date, b.*
FROM   b
JOIN   a ON a.action_date BETWEEN b.activation_date AND b.deletion_date

关于sql - PostgreSQL对一个表中的每一行联接另一表中的所有行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28601422/

10-13 06:45