0

基本的に、別のテーブルの ID に基づいてテーブルからデータを選択したいと考えています。したがって、アルゴリズムは次のようになります。

foreach i in (select distinct id from table1)
{
  select * from table2 where table2.id=i;
}

SQLクエリでこの機能を実行する方法は? ループの代わりに結合などを使用できることは理解していますが、私の要件は、id を for ループで 1 つずつ渡す必要があるということです。

4

2 に答える 2

1
select * from table2 where table2.id IN (select distinct id from table1)
于 2013-06-12T06:16:08.513 に答える
1

forの代わりに使用しforeachます。

PL/SQLをbegin .... end;ブロックに配置します(ただし、以下を参照してくださいdeclare)

select ステートメントからの完全なレコードをそのまま読み取る必要がありますが、関心があるのはそのフィールドだけ=iです。=i.idiid

PL/SQL では、ステートメントを変数selectとしてフェッチする必要があります。intoしたがって、対応する変数を宣言する必要があります。r table1%rowtype

このような変数の宣言はdeclare ...、PL/SQL ブロックのセクションにあります。

「アルゴリズム」は次のようになります

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;
于 2013-06-12T06:16:26.493 に答える