トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
5-50 プライマリキーの交換
SQLパズル
名前テーブル
Name ID
---- --
aaaa 1
bbbb 2
cccc 3
dddd 4
eeee 5
IDが1のレコードのIDを2
IDが2のレコードのIDを3
IDが3のレコードのIDを1
に更新する。
更新結果
Name ID
---- --
aaaa 2
bbbb 3
cccc 1
dddd 4
eeee 5
データ作成スクリプト
create table 名前(
Name char(4),
ID number(1),
primary key(ID));
insert into 名前 values('aaaa',1);
insert into 名前 values('bbbb',2);
insert into 名前 values('cccc',3);
insert into 名前 values('dddd',4);
insert into 名前 values('eeee',5);
commit;
SQL
update 名前
set ID = case ID
when 1 then 2
when 2 then 3
when 3 then 1 end
where ID in(1,2,3);
解説
単純case式で、IDの値に応じた値に更新してます。