这里有两张表:
--Table A
id
1
4
7
--Table B
id
3
8
11
13
我打算实现的是将A
表加入B
列id
,其中右键的值是大于左键的最小值。例如,表id=1
中的A
应与表id=3
中的B
一起加入。同样,表id=4
中的id=7
和A
都应与表id=8
中的B
一起加入。有没有一种很好的方法在postgresql中实现它?谢谢!
答案 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;
注意:您的问题是"大于",这就是答案所实现的。通常在这些情况下,我会期望"大于或等于"。对查询的调整很简单。