ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス
重複したレコードをDELETEする
スポンサード リンク

サンプル表「emp」データ
SQL> select * from emp;

EMP DEP NAME      SALARY
--- --- ---------- ----------
E01 D01 なまえ1    100
E02 D01 なまえ2    130
E03 D02 なまえ3    200
E04 D05 なまえ4    300
E05 D05 なまえ5    300


例1) 表「emp」の列「dept_id」が重複するレコードを削除する
SQL> delete from emp
 2    where rowid not in (
 3     select min( rowid ) from emp group by dept_id
 4     );

2行が削除されました。

SQL> select * from emp;

EMP DEP NAME     SALARY
--- ---  ---------- ----------
E01 D01 なまえ1    100
E03 D02 なまえ3    200
E04 D05 なまえ4    300

SQL>
 ※ min関数で指定してする項目はユニークになる必要があるので「rowid」を指定している。


スポンサード リンク

SELECTの結果をINSERTする
SELECTの結果から条件により、INSERTするテーブルを振り分ける(INSERT〜WHEN)
SELECTで取得した値でUPDATEする
更新レコードのデータによって、UPDATEする内容を変更する
レコードが存在しなければINSERT、レコードが存在すればUPDATEする(MERGE)
SELECTで取得した値をキーにDELETEする
重複したレコードをDELETEする

SQL(DML2) へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ