如何比较同一表(Oracle11g)中的2行



我需要创建一个存储过程来处理一个表,该表查找在具有不同状态的特定id上匹配的行
我知道获取行数据的语法,但我以前从未尝试过比较同一表中的两行?它是如何完成的?我是否需要使用变量来存储每个变量的数据?或者其他方式?

这个问题是基于这个问题,但对Oracle进行了一些修改:

该表的第一个可以具有也可以不具有多对多、多对一,与其他表的一对多关系。

编辑1:

表如下所示:
create table Test(
id char32 not null,
column1 varchar2(2048),
column2 varchar2(2048),
...
column30 varchar2(2048) )

任何列中的任何差异都会导致它们不同。存储过程将只返回关于它们是否相同的true或false。

以下形式的选择将测试dups:

select id ,
column1 ,
column2 ,
...
column30 ,
count(*)
from test
group by id ,
column1 ,
column2 ,
...
column30
having count(*) > 1
;

您也可以将测试表自联接到其自身,或者使用MINUS

最新更新