トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
10-92 RowNumでスカラー副問い合わせ
SQLパズル
TBL_A TBL_B
ITEM01 ITEM10 ITEM07 ITEM03
------ ------ ------ ------
織田 1 1 信長
徳川 2 1 信長
豊臣 3 4 光秀
明智 4
TBL_AのITEM01に、
TBL_AとTBL_Bを、
TBL_A.ITEM10 = TBL_B.ITEM07
を結合条件として紐付けた、TBL_BのITEM03を文字列結合させた値(ハイフンも文字列結合)
で更新する
結合条件を満たすデータが複数ある場合は、
任意の1レコードと結合させる
更新結果
TBL_A
ITEM01 ITEM10
----------- ------
織田-信長 1
徳川 2
豊臣 3
明智-光秀 4
データ作成スクリプト
create table TBL_A(
ITEM01 varchar2(10),
ITEM10 number(1));
insert into TBL_A values('織田',1);
insert into TBL_A values('徳川',2);
insert into TBL_A values('豊臣',3);
insert into TBL_A values('明智',4);
create table TBL_B(
ITEM07 number(1),
ITEM03 varchar2(10));
insert into TBL_B values(1,'信長');
insert into TBL_B values(1,'信長');
insert into TBL_B values(4,'光秀');
commit;
SQL
update TBL_A a
set ITEM01 = ITEM01 || '-'
|| (select b.ITEM03
from TBL_B b
where b.ITEM07 = a.ITEM10
and RowNum = 1)
where exists(select 1 from TBL_B b
where b.ITEM07 = a.ITEM10);
解説
RowNumで件数を1件のみとして、
スカラー副問い合わせにしてます