我有两个相同行类型的临时表:
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语句来完成它。
答案 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);