0

ソース管理データベース用に2つのテーブルがPRJあり PRJHIST、どちらも同じ列と制約を持っています。

例えば。次の行があり PRJますPRJHIST

PRJ TABLE    

PRJ_NAME PRJ_TYPE PRJ_VERSION PRJ_AUTHOR PRJ_LANG  
PRJ001     SCRIPT   3           MARK       PERL  
PRJ002     SCRIPT   2           JACK       KSH  
PRJ003     BINARY   4           JADE       C++  


PRJHIST TABLE  

PRJ_NAME PRJ_TYPE PRJ_VERSION PRJ_AUTHOR PRJ_LANG
PRJ001     SCRIPT   1           MARK       PERL  
PRJ001     SCRIPT   2           MARK       PERL  
PRJ001     SCRIPT   3           MARK       PERL  
PRJ002     SCRIPT   1           JACK       KSH  
PRJ002     SCRIPT   2           JACK       KSH  
PRJ003     BINARY   1           JADE       C++  
PRJ003     BINARY   2           JADE       C++  
PRJ003     BINARY   3           JADE       C++  
PRJ003     BINARY   4           JADE       C++  

PRJテーブルには常に、テーブルの最大バージョンの行がありPRJHISTます

テーブル max(PRJ_VERSION)内のを含むすべての行を削除するにはどうすればよいですか?PRJHIST

PRJHISTつまり、テーブル から以下の行を削除する必要があります

PRJ001     SCRIPT   3           MARK       PERL  
PRJ002     SCRIPT   2           JACK       KSH  
PRJ003     BINARY   4           JADE       C++  
4

1 に答える 1

1
DELETE FROM PRJHIST a
 WHERE EXISTS (SELECT 'X' 
                 FROM PRJ b
                WHERE a.PRJ_NAME = b.PRJ_NAME
                  AND a.PRJ_VERSION = b.PRJ_VERSION);
于 2012-12-28T04:13:36.563 に答える