Postgresql:加入大于左列

时间:2017-11-11 14:06:50

标签: sql postgresql

这里有两张表:

--Table A

id
1
4
7

--Table B
id
3
8
11
13

我打算实现的是将A表加入Bid,其中右键的值是大于左键的最小值。例如,表id=1中的A应与表id=3中的B一起加入。同样,表id=4中的id=7A都应与表id=8中的B一起加入。有没有一种很好的方法在postgresql中实现它?谢谢!

1 个答案:

答案 0 :(得分:0)

查找密钥的一种方法是相关子查询:

select a.*,
       (select min(b.id)
        from b
        where b.id > a.id
       ) as b_id
from a;

如果您需要b中的其他列,则可以将其加入b或使用横向联接:

select a.*, b.*
from a left join lateral
     (select b.*
      from b
      where b.id > a.id
      order by b.id
      fetch first 1 row only
     ) b;

注意:您的问题是"大于",这就是答案所实现的。通常在这些情况下,我会期望"大于或等于"。对查询的调整很简单。