2016-04-05 25 views
1

テーブルAに2つのテーブルがあり、テーブルAに1つの余分なカラムがあります。 テーブルbに存在するテーブルAの重複レコードを探したいとします。見つかった場合は、テーブルBのレコードも含まれているフラグでテーブルAの列を更新したい。両方のテーブルに私が持っている主キーはありません。 これまで、私はすべてのユニオンで次のクエリを試しました。2つのテーブル間で重複が見つかりました

Select * from (
Select rownum over (partition by ename,enum order by enum) r ,* from 
(Select *from a 
Union all 
Select * from B) data 
)d where r>1 

それは動作していません。そのオラクルのクエリ..同じクエリで私はテーブルを更新したいすべての列がテーブルBに一致する場合、列をflg 1と言う0以外

+1

任意のサンプルデータ – mohan111

+1

http://stackoverflow.com/questions/11885789/querying-two-tables-for-duplicate-values – mohan111

+1

両方のテーブルに存在する行を見つけるには、UNIONの代わりにINTERSECTを使用する必要があります。 。あなたのアップデートを実行するには、@ sagiが提案した 'EXISTS'を使います。 – dnoeth

答えて

2

あなたは質問がたくさんあるが、私は理解していればあなたは正しく、あなたがEXISTS()を使用することができます。

UPDATE a 
SET a.YourFlag = 1 
WHERE EXISTS(SELECT 1 FROM b 
      WHERE a.ename = b.ename and a.enum = b.enum) 

私は、テーブル間の関係がename,enumであることを、あなたのクエリが想定しましたか?そうでない場合は、サブクエリ内のwhere句を関係に変更します。

+0

Bingo !!!ありがとう – Pramod

関連する問題