トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
7-10 ランダムな列をupdate
SQLパズル
更新対象テーブルの、
Col1、Col2、Col3、Col4の4列のどれか1つを25%の確率で、-999に更新する。
データ作成スクリプト
create table 更新対象テーブル(
ColPK number(3),
Col1 number(3),
Col2 number(3),
Col3 number(3),
Col4 number(3),
primary key(ColPK));
begin
execute immediate 'truncate table 更新対象テーブル';
for i in 1..100 loop
insert into 更新対象テーブル values(i,i,i,i,i);
end loop;
commit;
end;
/
SQL
update 更新対象テーブル a
set(Col1,Col2,Col3,Col4) =
(select
case when mod(abs(random),4) = 0 then -999 else Col1 end,
case when mod(abs(random),4) = 1 then -999 else Col2 end,
case when mod(abs(random),4) = 2 then -999 else Col3 end,
case when mod(abs(random),4) = 3 then -999 else Col4 end
from(select dbms_random.random() as random,b.RowID as Row_ID,
Col1,Col2,Col3,Col4 from 更新対象テーブル b)
where a.RowID=Row_ID);
解説