
お世話になります。
下のようなテーブルでデータのメンテナンスを行いたいのですが、update,deleteを効率良く行う方法はありますでしょうか?
No カラムA カラムB カラムC カラムD
----------------------------------------
1 aaa 111 あああ
2 aaa 222 いいい 123
3 aaa 333 ううう
4 aaa 444 えええ
5 aaa 555 おおお 456
6 bbb 222 いいい
7 bbb 333 ううう
8 bbb 555 おおお
カラムAが「aaa」のレコードと「bbb」のレコードがあり、カラムB,Cは一部のレコードが重複しています。
この状態から、
・No2のカラムDをNo6のカラムDにセット
・No5のカラムDをNo8のカラムDにセット
・No2,3,5のレコードを削除
したいのです。
※カラムB,Cが重複している場合、カラムAが「bbb」のレコードにカラムDの値を反映し、カラムAが「AAA」のレコードは削除したいです。
update,delete共に効率良く行う方法があれば、助かります。
初歩的な質問かも知れませんが、御教示いただけますと幸いです。
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
効率良くというか、普通のupdate文・delete文ですが・・
update テーブル T1
set T1.カラムD = (select カラムD from テーブル T2 where T2.カラムA = 'aaa' and T1.カラムB = T2.カラムB and T1.カラムC = T2.カラムC)
where T1.カラムA = 'bbb'
and exists (
select * from テーブル T2 where T2.カラムA = 'aaa' and T1.カラムB = T2.カラムB and T1.カラムC = T2.カラムC
);
delete from テーブル T1
where T1.カラムA = 'aaa'
and exists (
select * from テーブル T2 where T2.カラムA = 'bbb' and T1.カラムB = T2.カラムB and T1.カラムC = T2.カラムC
);
こんな感じでどうでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブル名をカラムとして取得...
-
sqlplusで表示が変なので、出力...
-
SQL*LoaderでCSVから指定した列...
-
update文で改行を入れる
-
SQL、2つのテーブルで条件一致...
-
カラム位置変更
-
SQLでSUMなどの関数でデータが...
-
DBからタブ区切りのCSVデータを...
-
SQL(oracle)でご助言いただきた...
-
SQLで違うテーブルの値を比較し...
-
オラクルの条件で時間を指定す...
-
件数とデータを同時に取得する...
-
SQL 複数テーブルのupdate
-
oracle XEのACCESS(OD...
-
INDEX RANGE SCAN とは?
-
ORACLE SQL 複数項目の最大抽出
-
Viewのカラムの長さが不明?
-
UPDATE文
-
半角英数文字の抽出がしたい。
-
特定のカラムが更新されたとき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
update文で改行を入れる
-
SQL*LoaderでCSVから指定した列...
-
SQL、2つのテーブルで条件一致...
-
SQLでSUMなどの関数でデータが...
-
SQL 複数テーブルのupdate
-
テーブル名をカラムとして取得...
-
sqlplusで表示が変なので、出力...
-
ROWNUMでUPDATEをしたいのです...
-
SQL(oracle)でご助言いただきた...
-
カラム位置変更
-
件数とデータを同時に取得する...
-
OracleのSQLで同テーブルのカラ...
-
LONG型の先頭250バイトを Varch...
-
数値をNUMBER型にするかCHAR型...
-
特定のカラムが更新されたとき...
-
半角英数文字の抽出がしたい。
-
DBからタブ区切りのCSVデータを...
-
sqlで質問です。 aテーブルとb...
-
SQLについて教えて下さい。 主...
-
Oracleのview、synonymをCOMPIL...
おすすめ情報