基本上我想根据另一个表的id来从表中选择数据。算法如下:
foreach i in (select distinct id from table1)
{
select * from table2 where table2.id=i;
}
如何使用SQL查询执行此功能?我知道我们可以使用连接等而不是循环,但是,我的要求是我需要在for循环中逐个传递id。
答案 0 :(得分:1)
select * from table2 where table2.id IN (select distinct id from table1)
答案 1 :(得分:1)
使用for
代替foreach
。
将PL / SQL放入begin .... end;
块(但请参阅下面的declare
)
=i
应该是=i.id
,因为i
是select语句中的完整记录,但您只对其id
字段感兴趣。
在PL / SQL中,必须为select
语句提取into
个变量。因此,您必须声明一个相应的变量:r table1%rowtype
此类变量的声明位于PL / SQL块的declare ...
部分。
然后“算法”变为
declare
r table2%rowtype;
begin
for i in (select distinct id from table1) loop
select * into r from table2 where table2.id = i.id;
end loop;
end;