比较具有相同行类型PostgreSQL的两个表

时间:2013-12-17 18:35:52

标签: sql postgresql loops select

我有两个相同行类型的临时表:

items
id - BIGINT
value - float

两个临时表:称为A和B:

40 items in Table A
150 items in Table B

我想将表A中的每个项目与表B中的每个项目进行比较,并返回其中的所有项目:

(a.value - b.value < 5)

进入第三个名为Table C的临时表。

我可以使用循环轻松完成此操作,但我知道循环相当慢,我想知道是否有一种简单的方法可以使用select语句来完成它。

1 个答案:

答案 0 :(得分:1)

这样的东西?

insert into c
select * from a
where exists (select 1 from b where a.value - b.value < 5);

或者您是否也想要表B中的所有值?

在那种情况下,

insert into c
select * from a
where exists (select 1 from b where a.value - b.value < 5)
union
select * from b
where exists (select 1 from a where a.value - b.value < 5);