繁体   English   中英

如何在Oracle中删除具有最大列值的行

[英]How to delete the rows with the max of column values in Oracle

我有2代表我的源代码管理数据库- PRJPRJHIST ,两者具有相同的列和约束。

例如。 PRJPRJHIST具有以下行

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表中具有最高版本的行

如何删除PRJHIST表中具有max(PRJ_VERSION)所有行?

即我需要从PRJHIST表中删除以下行

PRJ001     SCRIPT   3           MARK       PERL  
PRJ002     SCRIPT   2           JACK       KSH  
PRJ003     BINARY   4           JADE       C++  
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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM