2017-11-24 10 views
0

例として、このSQLクエリを実行して結果が得られました。 oracleクエリーを使用してこれらの結果を削除します。oracleを使用して複数のテーブルのレコードを1つのクエリで削除する方法

Select 
 
a.ENAME , 
 
a.JOB, 
 
a.MGR, 
 
a.HIREDATE, 
 
a.SAL, 
 
b.DEPTNO, 
 
b.DNAME, 
 
b.LOC 
 
from emp a , dept b where a.DEPTNO=b.DEPTNO and a.DEPTNO=10 
 
DELETE FROM emp , dept 
 
WHERE a.DEPTNO=b.DEPTNO

+0

単一クエリでは実行できません。 2つのテーブルから削除するには2つのクエリが必要です。 – XING

+0

説明できます –

+0

以下の回答を参照してください。 – XING

答えて

0

二つのテーブルそれをリンクから削除する任意のコマンドがありません。しかし、私は2つのシナリオを提案します。最初のシナリオは、非親/子テーブルに使用できます。 2番目のシナリオは、親/子テーブルに使用できます。

最初に共通のPKのまたはテーブルの共通フィールドをすべて収集します。 (確かにあなたは共通のフィールドを持っています)。

(Select a.DEPTNO from emp a , dept b where a.DEPTNO=b.DEPTNO and a.DEPTNO=10) 

次に、1つのトランザクションでdeleteコマンドのシーケンスを使用します。

delete from dept where DEPTNO IN (Select a.DEPTNO from emp a , dept b where a.DEPTNO=b.DEPTNO and a.DEPTNO=10) 
delete from emp where DEPTNO IN (Select a.DEPTNO from emp a , dept b where a.DEPTNO=b.DEPTNO and a.DEPTNO=10) 

第二:設定を削除CASCADEを使用しています。 (親/子テーブル用)
副作用が制御できない場合、この解決策は有害です。
カスケード削除では、親テーブルのレコードが削除されると、子テーブルの対応するレコードが自動的に削除されます。

+0

'CASCADE DELETE'は、あなたが外部キー関係を持っているところでうまく機能します。そして、あなたはテーブルの作成中にこれを宣言します。ここで良いサンプルを読んでください。https://www.techonthenet.com/oracle/foreign_keys/foreign_delete.php – XING

+0

ありがとう、私はそれを知っています(2番目のシナリオは親/子テーブルに使用できます)。 –

+0

@XING。 。 。外部キーの関係は、テーブルの作成後に定義することもできます。 –

関連する問題