Sql 如何在Oracle中删除列值最大的行
我的源代码管理数据库有两个表-Sql 如何在Oracle中删除列值最大的行,sql,oracle,Sql,Oracle,我的源代码管理数据库有两个表-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
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
表中最大版本的行
如何删除PRJHIST
表中具有max(PRJ\u版本)
的所有行
i、 e我需要从PRJHIST
表中删除以下行
PRJ001 SCRIPT 3 MARK PERL
PRJ002 SCRIPT 2 JACK KSH
PRJ003 BINARY 4 JADE C++
谢谢你。我会试试这个,明天回复。EXIST条款应该有助于我的事业。
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);